我正在使用
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 或更早版本来创建文件,所以也许这就是问题所在?
提前致谢
这对我有用
df = pd.read_excel("Set.xlsb", sheet_name='Dataset', engine='pyxlsb')
感谢此处的答案:将 Pandas 与 XLSB 文件一起使用
可能是因为你没有正确保存那些.xlsx,比如简单地将文件后缀更改为xlsx。
这是一个适合我的解决方案:
将无法打开的文件重新保存到 .xlsx,即使这些文件已经具有 .xlsx 后缀。
如果您不知道哪些文件需要重新保存,请从尺寸异常大的文件开始。