python - xlutils 只适用于 xls,不适用于 xlsx?

标签 python excel python-3.x xlutils

我有一个现有的 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.否则文件会损坏并且无法打开。

有办法解决这个问题吗?我可以将 xlutilsxlsx 一起使用,还是该模块与该 Excel 格式不兼容?

openpyxl the solution?

我不是第一个遇到 this problem 的人,但我找不到修复方法。

最佳答案

xlutils依赖xlrd (读取文件)和 xlwt (写入文件),因此,save xlutils的功能实际使用xlwt .

.xlsx是一种较新且完全不同的文件格式(基本上是压缩的 xml 文件),来自 .xls 。而xlrd已升级为 .xlsx文件,xlwt未升级为写入此类文件 ( does xlwt support xlsx Format )。

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

所以,要么使用 openpyxl做你想做的事(完全删除 xlutilsxlrdxlwt 因为你不关心旧版 .xls 格式),或另存为临时 .xls使用当前进程创建文件,然后使用 xlrd 读回表并写回openpyxl .

根据当前代码的复杂性,您可以选择完全重写或涉及更多包的肮脏解决方法(但避免重写当前代码)

关于python - xlutils 只适用于 xls,不适用于 xlsx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45915266/

相关文章:

python - 奇怪的链接提取行为

opencv - Python 3 是否支持 OpenCV?

python - 将嵌套列表转换为 numpy 数组

python - 将 Iris 约束与 OR 结合起来?

python - 如何在Python中循环遍历字母表索引?

excel - 如果列有值,如何隐藏 2 列?

vba - Excel VBA : Copy two columns in a different file

VBA Excel - Workbook_SheetChange

python - numpy 中的逻辑索引抛出异常

python - 使用正则表达式获取错误数据