xlutils只适用于xls,而不是xlsx?
我有一个现有的Excel工作簿Workbook_A
。 我正在创build一个相同的工作簿Workbook_B
,然后将一些值插入新工作簿中的某些单元格中。
我正在做的简化版本:
from xlrd import open_workbook from xlutils.copy import copy rb = open_workbook(Workbook_A) wb = copy(rb) s = wb.get_sheet(0) s.write(row, col, value) wb.save(Workbook_B)
Workbook_A
可以是xlsx
文件,但是我必须将其保存为xls
文件Workbook_B.xls
。 否则,文件变得腐败,无法打开。
有没有办法来解决这个问题? 我可以在xlsx
使用xlutils
,还是不是与Excel格式兼容的模块?
是openpyxl
的解决scheme?
我不是第一个遇到这个问题 ,但我找不到解决办法。
xlsutils
依靠xlrd
(读取文件)和xlwt
(写入文件)包。
所以save
function使用xlwt
。
坏消息是,虽然xlrd
已经升级到新的,完全不同的.xlsx
文件(基本上是压缩xml文件), xlwt
没有升级到写这样的文件( xlwt支持xlsx格式 )
来自https://xlwt.readthedocs.io/en/latest/
xlwt是一个用于将数据和格式化信息写入旧Excel文件的库(即:.xls)
所以传递.xlsx扩展名不会改变一件事情。 底层的格式仍然是.xls
(并被MS Excel视为已损坏,因为它依赖扩展而不是内容来决定如何打开文件)
因此,要么使用openpyxl
来做你想做的事(完全放弃xlutil
, xlrd
, xlwt
因为你不关心传统的.xls
格式),或者使用你当前的进程保存为一个临时的.xls
文件,然后读回来使用xlrd
并写回到openpyxl
。
根据当前代码的复杂性,您可以select完全重写还是涉及更多包的脏变通办法(但不要重写当前代码)