为什么有的.xlsx文件用openpyxl可以成功打开,但有的却打不开?

问题描述 投票:0回答:2

我正在使用

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 或更早版本来创建文件,所以也许这就是问题所在?

提前致谢

python excel python-2.7 openpyxl xlsx
2个回答
0
投票

这对我有用

df = pd.read_excel("Set.xlsb", sheet_name='Dataset', engine='pyxlsb')

感谢此处的答案:将 Pandas 与 XLSB 文件一起使用


-2
投票

可能是因为你没有正确保存那些.xlsx,比如简单地将文件后缀更改为xlsx。

这是一个适合我的解决方案:

将无法打开的文件重新保存到 .xlsx,即使这些文件已经具有 .xlsx 后缀。

如果您不知道哪些文件需要重新保存,请从尺寸异常大的文件开始。

© www.soinside.com 2019 - 2024. All rights reserved.