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 (写入文件)包。

所以savefunction使用xlwt

坏消息是,虽然xlrd已经升级到新的,完全不同的.xlsx文件(基本上是压缩xml文件), xlwt没有升级到这样的文件( xlwt支持xlsx格式 )

来自https://xlwt.readthedocs.io/en/latest/

xlwt是一个用于将数据和格式化信息写入旧Excel文件的库(即:.xls)

所以传递.xlsx扩展名不会改变一件事情。 底层的格式仍然是.xls (并被MS Excel视为已损坏,因为它依赖扩展而不是内容来决定如何打开文件)

因此,要么使用openpyxl来做你想做的事(完全放弃xlutilxlrdxlwt因为你不关心传统的.xls格式),或者使用你当前的进程保存为一个临时的.xls文件,然后读回来使用xlrd并写回到openpyxl

根据当前代码的复杂性,您可以select完全重写还是涉及更多包的脏变通办法(但不要重写当前代码)