Python 为什么有些.xlsx文件使用openpyxl成功打开,而其他文件无法打开?

Python 为什么有些.xlsx文件使用openpyxl成功打开,而其他文件无法打开?,python,excel,python-2.7,openpyxl,xlsx,Python,Excel,Python 2.7,Openpyxl,Xlsx,我使用的是python2.7&openpyxl==2.5.11 我想使用openpyxl读取.xlsx文件。最初我用从谷歌硬盘下载的文件进行测试,一切都很好 现在,我尝试加载使用Microsoft Excel生成的一些文件,但发现以下错误: 引发IOError(“文件不包含有效的工作簿部分”) 我试图打印一些变量并自己计算,但我对Excel文件缺乏更深入的了解,有些抽象层次我不能很快理解 下面是引发错误的相关代码段(excel.py): 如果相关的话,我在OSX和Ubuntu上都有问题 编辑

我使用的是
python2.7
&
openpyxl==2.5.11

我想使用
openpyxl
读取
.xlsx
文件。最初我用从谷歌硬盘下载的文件进行测试,一切都很好

现在,我尝试加载使用Microsoft Excel生成的一些文件,但发现以下错误:

引发IOError(“文件不包含有效的工作簿部分”)

我试图打印一些变量并自己计算,但我对Excel文件缺乏更深入的了解,有些抽象层次我不能很快理解

下面是引发错误的相关代码段(
excel.py
):

如果相关的话,我在OSX和Ubuntu上都有问题

编辑: 我无法用我自己生成的文件重现问题。我认为这个问题只能在旧文件中重现。有问题的人使用Excel 2008或更旧版本创建文件,所以这可能就是问题所在


提前感谢

可能是因为您没有正确保存那些.xlsx文件,例如只需将文件后缀更改为xlsx即可

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

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


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

是导致文件失败的文件扩展名.xls还是.xlsx?我会尝试在Excel中打开并重新保存有问题的文件,然后再次加载,以查看是否存在奇怪的/微妙的不兼容问题。这两个扩展名都失败。例外非常明显:这些文件可能不是有效的XLSX文件。我建议您提交一份带有示例文件的bug报告。@stovfl谢谢您的反馈,我差点忘了我们有一个抽象层,它允许我们打开
xls
文件。因此,它归结为打开
xlsx
文件:)因此,请回答您的问题并删除任何
xls
参考,以获得正确的标题。
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")