我正在使用 Python 2.7
& openpyxl==2.5.11
.
我要阅读.xlsx
使用 openpyxl
的文件.最初,我使用从 Google Drive 下载的文件进行测试,一切正常。
现在,我尝试加载一些使用 Microsoft Excel 生成的文件,但我看到了这个错误:
raise IOError("File contains no valid workbook part")
我尝试打印一些变量并自己弄清楚,但我对 Excel 文件缺乏更深入的了解,并且有些抽象级别我无法快速理解。
这是引发错误的相关代码段( excel.py
):
def _find_workbook_part(package):
workbook_types = [XLTM, XLTX, XLSM, XLSX]
for ct in workbook_types:
part = package.find(ct)
if part:
return part
# some applications reassign the default for application/xml
defaults = set((p.ContentType for p in package.Default))
workbook_type = defaults & set(workbook_types)
if workbook_type:
return Override("/" + ARC_WORKBOOK, workbook_type.pop())
raise IOError("File contains no valid workbook part")
如果相关的话,我在 OSX 和 Ubuntu 上都有问题。
编辑:
我无法使用自己生成的文件重现该问题。我认为这个问题只能用旧文件重现。遇到问题的人使用 Excel 2008 或更早版本来创建文件,所以这可能是问题所在?
提前致谢
最佳答案
可能是因为您没有正确保存那些 .xlsx,例如只是将文件后缀更改为 xlsx。
这是一个适合我的解决方案:
将无法打开的文件重新保存到 .xlsx,即使这些文件已经具有 .xlsx 后缀。
如果您不知道哪些文件需要重新保存,请从异常大的文件开始。
关于python - 为什么有些 .xlsx 文件可以用 openpyxl 成功打开,而有些则打不开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53422596/