使用openpyxl编辑Excel2007文件(.xlsx),而不改变它自己的样式?

15
我有一个.xlsx文件需要编辑,我发现openpyxl可以操作Excel 2007 文件。我只想更改一些单元格中的值,而保留其他设置不变。
但是在阅读了文档之后,我没有找到编辑现有文件的示例。它仅演示了如何读取.xlsx文件并将其写入新文件。
我尝试了下面的方法来编辑现有文件,但保存后,文件中的样式已被删除(比如字体、颜色):
from openpyxl.reader.excel import load_workbook
wb=load_workbook(r'd:\foo1.xlsx')
ws=wb.get_sheet_by_name('Bar')
ws.cell('A1').value= 'new_value'
# save the workbook to a new file to finish the editing
# but the style settings has been removed (such like font, color) in the new file
wb.save(r'd:\foo2.xlsx')
2个回答

18

现在openpyxl无法很好地处理样式,因此我尝试使用pywin32 COM并得到了解决方案。 这里有一个好的python-excel-mini-cookbook,可以使用pywin32 COM来处理Excel。


6
好的链接!如果它失效了,这里有一个与其内容相同的摘要:https://gist.github.com/airstrike/5469478 - airstrike

1

openpyxl目前还不完全支持样式。请确保您正在使用最新版本(现在的版本为1.5.3),因为它最近改善了其样式功能。

对于.xls文件,xlwt具有更完整的格式设置,但尚不支持xlsx。


是的,我正在使用v1.5.3版本,所以目前似乎没有好的解决方法。使用'COM with pywin32'可以吗? - Xiao
1
COM据说可以工作,并使用Office的本地接口。不过我没有尝试过,因为它只能在Windows上运行。祝你好运! - Adam Morris
更新列后,样式能保留吗? - conandor
1
@conandor - 是的。虽然较少使用的命名样式仍未得到支持,但从openpyxl 2.1开始,大部分样式信息都被保留(甚至可以进行编辑!),包括行/列样式和条件格式。 - Adam Morris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接