xlutils只适用于xls,不适用于xlsx?
问题描述:
我有一个现有的Excel工作簿,Workbook_A
。我正在创建一个完全相同的工作簿,Workbook_B
,然后在新工作簿中的一些单元格中插入一些值。xlutils只适用于xls,不适用于xlsx?
的我在做什么的简化版本:
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
。否则,文件变得腐败,无法打开。
有没有办法解决这个问题?我可以使用xlutils
与xlsx
,还是不是与Excel格式兼容的模块?
我没有遇到this problem第一个,但我不能找到一个解决。
答
xlsutils
依靠xlrd
(读取文件)和xlwt
(写入文件)包。因此,save
功能使用xlwt
。
坏消息是,同时xlrd
已经升级,新的,完全不同的.xlsx
文件(基本上压缩XML文件)的工作,xlwt
不是从https://xlwt.readthedocs.io/en/latest/
xlwt是写数据和较旧的Excel文件格式信息库(即表:.xls)
因此,传递.xlsx扩展名不会改变任何事情。底层格式仍然.xls
(并通过MS Excel中被视为腐败,因为它依赖于扩展,而不是内容,决定如何打开文件)
所以,要么使用openpyxl
做你想做什么(降xlutil
,xlrd
,xlwt
,因为您不关心传统的.xls
格式),或者使用您当前的进程将其保存为临时.xls
文件,然后使用xlrd
将其读回到工作表并将其写回openpyxl
。
根据当前代码的复杂程度,您可以选择完全重写还是涉及更多包的脏解决方法(但要避免重写当前代码)