当前位置: 首页 > 面试题库 >

使用xlrd和xlwt编辑现有的Excel工作簿和工作表

东门俊民
2023-03-14
问题内容

在的文档中xlrdxlwt我了解了以下内容:

如何从现有的工作簿/工作表中阅读:

from xlrd import open_workbook
wb = open_workbook("ex.xls")
s = wb.sheet_by_index(0)
print s.cell(0,0).value
#Prints contents of cell at location a1 in the first sheet in the document called ex.xls

如何创建新的工作簿/工作表:

from xlwt import Workbook
wb = Workbook()
Sheet1 = wb.add_sheet('Sheet1')
Sheet1.write(0,0,'Hello')
wb.save('ex.xls')
#Creates a document called ex.xls with a worksheet called "Sheet1" and writes "Hello" to the cell located at a1

我现在想做的是在现有工作簿中打开一个现有工作表,并写入该工作表。

我已经尝试过类似的东西:

from xlwt import open_workbook
wb = open_workbook("ex.xls")
s = wb.sheet_by_index(0)
print s.cell(0,0).value

open_workbook仅是xlrd模块的一部分,而不是xlwt

有任何想法吗?

Edit1:在Olivers的建议下,我调查xlutils并尝试了以下操作:

from xlrd import open_workbook
from xlwt import Workbook
from xlutils.copy import copy

wb = open_workbook("names.xls")
s = wb.get_sheet(0)
s.write(0,0,'A1')
wb.save('names.xls')

但是,这给了我以下错误信息:

File "C:\Python27\lib\site-packages\xlrd\book.py", line 655, in get_sheet
raise XLRDError("Can't load sheets after releasing resources.")
xlrd.biffh.XLRDError: Can't load sheets after releasing resources.

编辑2:错误消息是由于不正确使用该get_sheet功能。终于找到了如何使用它:

from xlrd import open_workbook
from xlwt import Workbook
from xlutils.copy import copy

rb = open_workbook("names.xls")
wb = copy(rb)

s = wb.get_sheet(0)
s.write(0,0,'A1')
wb.save('names.xls')

问题答案:

正如我在op的编辑中所写的那样,要编辑现有的excel文档,您必须使用该xlutils模块(感谢Oliver)

这是执行此操作的正确方法:

#xlrd, xlutils and xlwt modules need to be installed.  
#Can be done via pip install <module>
from xlrd import open_workbook
from xlutils.copy import copy

rb = open_workbook("names.xls")
wb = copy(rb)

s = wb.get_sheet(0)
s.write(0,0,'A1')
wb.save('names.xls')

这将用文本“ a1”替换“ names.xls”第一页中位于a1的单元格的内容,然后保存文档。



 类似资料:
  • 我试图使用apache POI、使用primefaces和java在现有的excel工作簿中创建一个新的工作表,但是到目前为止还没有成功。谁能告诉我这是怎么做的吗?我可以做单张 下面的代码是我为在一个xls文件中创建多个工作表而编写的,我给出的条件是它没有大于65535的of行创建新工作表并迭代它,但它显示错误 警告:允许范围(0..65535)之外的无效行号(65536)java.lang.Il

  • 所以在问这个之前,我搜索并发现了一些与我在这里想要做的相似的事情。 基本上我有工作簿AlphaMaster。这个工作簿是一个模板,我想用它来创建每周的新工作簿。 在本工作簿中,有名为“周一至周六”的工作表,以及带有相应日期的周一、周二等其他工作表。 我创建了一个在打开工作簿时加载的表单。我想要的是当我单击表单运行时,它将: > 将代码保存模板作为新工作簿运行 根据userform1的输入重命名工作

  • 本文向大家介绍python中使用xlrd、xlwt操作excel表格详解,包括了python中使用xlrd、xlwt操作excel表格详解的使用技巧和注意事项,需要的朋友参考一下 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之

  • 我得到了这个错误: 工作簿已包含此名称的工作表 行应该检查工作簿是否已经包含此名称的工作表,但它不工作。我仍然有错误。 谢谢你的帮助!

  • 我试图将列表数据写入一个工作簿中的多个excel表格。与第一个列表一样,代码将创建新工作簿并为列表[1]创建新工作表,对于第二个列表,它将在现有工作簿中创建新工作表,依此类推。所以我写了下面的代码。但是它不起作用,我只能看到列表[1]的第一页。有人能帮我提供任何替代解决方案吗? 下面我写的代码 谢谢,Priyank Shah

  • 这里是VBA新手。 谢谢你的教育!