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

20 浏览
0 Comments

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

xlrdxlwt文档中,我学到了以下内容:

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

from xlrd import open_workbook
wb = open_workbook("ex.xls")
s = wb.sheet_by_index(0)
print s.cell(0,0).value
#打印出名为ex.xls的文档中的第一个工作表中a1位置的单元格内容

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

from xlwt import Workbook
wb = Workbook()
Sheet1 = wb.add_sheet('Sheet1')
Sheet1.write(0,0,'Hello')
wb.save('ex.xls')
#创建一个名为ex.xls的文档,其中包含一个名为"Sheet1"的工作表,并将"Hello"写入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模块。

有什么想法吗?

编辑1:

在Oliver的建议下,我研究了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')

0