xlutils 仅适用于 xls,不适用于 xlsx?
xlutils only works on xls, not xlsx?
我有一个现有的 Excel 工作簿,Workbook_A
。我正在创建一个相同的工作簿 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
。否则文件会损坏且无法打开。
有办法解决这个问题吗?我可以将 xlutils
与 xlsx
一起使用吗?或者该模块是否与 Excel 格式不兼容?
是openpyxl
the solution?
我不是第一个遇到this problem的人,但我找不到解决方法。
由于xlutils
依赖xlrd
(读取文件)和xlwt
(写入文件),因此,xlutils
的save
函数实际使用 xlwt
.
.xlsx
是一种较新的完全不同于 .xls
的文件格式(基本上是压缩 xml 文件)。虽然 xlrd
已升级为读取 .xlsx
文件,但 xlwt
未升级为 写入 此类文件 (does xlwt support xlsx Format)。
自 xlwt
only writes older Excel (.xls
) files 以来,传递 .xlsx 扩展名并没有改变任何事情。底层格式仍然是 .xls
(并且被 MS Excel 视为已损坏,因为它依赖于扩展名而不是内容来决定如何打开文件)
所以,要么使用 openpyxl
做你想做的事(完全放弃 xlutils
、xlrd
、xlwt
,因为你不关心遗留问题 .xls
格式),或使用当前进程保存为临时 .xls
文件,然后使用 xlrd
读回 sheet 并写回 openpyxl
.
根据您当前代码的复杂性,您可以选择完全重写或涉及更多包的肮脏解决方法(但避免重写当前代码)
我有一个现有的 Excel 工作簿,Workbook_A
。我正在创建一个相同的工作簿 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
。否则文件会损坏且无法打开。
有办法解决这个问题吗?我可以将 xlutils
与 xlsx
一起使用吗?或者该模块是否与 Excel 格式不兼容?
是openpyxl
the solution?
我不是第一个遇到this problem的人,但我找不到解决方法。
由于xlutils
依赖xlrd
(读取文件)和xlwt
(写入文件),因此,xlutils
的save
函数实际使用 xlwt
.
.xlsx
是一种较新的完全不同于 .xls
的文件格式(基本上是压缩 xml 文件)。虽然 xlrd
已升级为读取 .xlsx
文件,但 xlwt
未升级为 写入 此类文件 (does xlwt support xlsx Format)。
自 xlwt
only writes older Excel (.xls
) files 以来,传递 .xlsx 扩展名并没有改变任何事情。底层格式仍然是 .xls
(并且被 MS Excel 视为已损坏,因为它依赖于扩展名而不是内容来决定如何打开文件)
所以,要么使用 openpyxl
做你想做的事(完全放弃 xlutils
、xlrd
、xlwt
,因为你不关心遗留问题 .xls
格式),或使用当前进程保存为临时 .xls
文件,然后使用 xlrd
读回 sheet 并写回 openpyxl
.
根据您当前代码的复杂性,您可以选择完全重写或涉及更多包的肮脏解决方法(但避免重写当前代码)