python - 为什么有些 .xlsx 文件可以用 openpyxl 成功打开,而有些则打不开?

标签 python excel python-2.7 openpyxl xlsx

我正在使用 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/

相关文章:

python - 如何在 Python 中动态分配 pickle 名称?

python - 图像分割中的轮廓补全

带有 if 但没有 else 的 Python lambda

Python 不支持的操作数类型为 + :  'float'  and 'str

excel - ISNUMBER 为只有数字的单元格返回 FALSE

python - 将args线程化到给定错误的许多参数?

Excel 找到第一个空白单元格

python - 如何使用 Python ftplib 获取 FTP 文件的修改时间

python - 导入错误 : No module named redis_cache

python - 使用 Python 读取文件列表并检查目录中文件是否存在