首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用xlrd和xlwt编辑现有excel工作簿和工作表

使用xlrd和xlwt编辑现有excel工作簿和工作表
EN

Stack Overflow用户
提问于 2014-11-16 22:07:24
回答 2查看 115.7K关注 0票数 31

xlrdxlwtdocumentation中,我学到了以下内容:

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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

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

我尝试过这样的方法:

代码语言:javascript
复制
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:在奥利弗的建议下,我查看了xlutils,并尝试了以下方法:

代码语言:javascript
复制
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')

但是,这给出了以下错误消息:

代码语言:javascript
复制
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函数使用不当造成的。我终于知道如何使用它了:

代码语言:javascript
复制
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')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-16 23:10:53

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

下面是正确的方法:

代码语言:javascript
复制
#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')

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

票数 47
EN

Stack Overflow用户

发布于 2017-07-08 00:38:23

下面是使用与xlsx兼容的openpyxl模块执行上述代码的另一种方法。到目前为止我所看到的,它也保持了格式。

代码语言:javascript
复制
from openpyxl import load_workbook
wb = load_workbook('names.xlsx')
ws = wb['SheetName']
ws['A1'] = 'A1'
wb.save('names.xlsx')
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26957831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档