xlsx和xlsm文件返回badzipfile:file不是zip文件

时间:2015-11-23 14:27:20

标签: python python-2.7 openpyxl

我试图打开xlsx文件和xlsm文件都给我同样的错误

badzipfile: file is not a zip file

这就是我输入的内容:

import openpyxl
wb=openpyxl.load_workbook('c:\\users\\me\\documents\\filename.xlsm', keep_vba=True)
wb2=openpyxl.load_workbook('c:\\users\\me\\documents\\filename2.xlsx')

两个load_workbook命令都会导致相同的错误。它们都存在于那个位置。为什么我会收到此错误?

13 个答案:

答案 0 :(得分:5)

同样的问题发生在我身上,然后我注意到以下几点:

当我从文件管理器创建.xlsx文件时,通过使用.xlsx格式创建新文档,我遇到了同样的错误。但是当我在我的情况下用一些电子表格软件(libreoffice-calc)创建文件时,它运行正常。我希望这可能有所帮助。

答案 1 :(得分:4)

如果您使用类似文件的对象调用openpyxl.load_workbook,请确保以二进制模式打开它。

答案 2 :(得分:2)

这是因为您创建了空的.xlsx而没有元数据,这是一个没有单元格格式的空文件。使用exel或等效的电子表格软件将空文件保存在该目录中,这将创建一个带有单元格格式的xlsx文件,保存后尝试使用openpyxl加载文件

答案 3 :(得分:2)

xlsx文件可能具有密码,您无权访问。 删除密码,您可以使用openpyxl.load_workbook()进行访问。

答案 4 :(得分:1)

当我将openpyxl指向文件的别名而不是原始文件时,这也发生在我身上。

答案 5 :(得分:1)

我做了一些非常愚蠢的事情并得到了同样的错误。 基本上,今天是我第一次尝试这个,我得到它与自动化'自动化'示例然后尝试我的Excel。 没有工作! 我花了一段时间才意识到错误是由于工作簿密码受到保护。 该错误根本不匹配,但当我从工作簿中删除保护时,它工作正常! 我能说什么,但是' duh'并且'是啊!'?

答案 6 :(得分:1)

我有同样的问题。这是因为我试图在Python中打开的文件已经在运行。您需要检查您尝试在Python中打开的文件是否未在任务中运行。

答案 7 :(得分:1)

您尝试打开的XLSX或XLS或XLSM文件是以“〜”开头的excel恢复文件。您可以通过以下方式进行检查:

for file in path.glob('*.xlsx'):print(file)

您可以通过选中跳过这些文件,并从完整路径获取文件名:

filename=str(filename).split("\\")[-1:][0]

检查文件名是否以“〜”开头,因为所有恢复文件都将以“〜”开头

if filename[0]!="~"

答案 8 :(得分:0)

我参加聚会很晚,但是我收到了相同的错误,但是原因不同。

在Mac上,当我将.xlsx文件剪切并粘贴到所需的目录中时,它实际上并没有放置文件本身,而是放置了符号链接。由于某种原因,这将引发相同的错误。我通过打开文件并使用“另存为”来解决此问题。

答案 9 :(得分:0)

我已经遇到此错误已有一段时间了,所以我只是卸载了openpyxl并重新安装了版本2.6.3,它运行良好。 这可能对您也有帮助,无需更改任何内容,只需使用pip

运行这些命令即可。
pip uninstall openpyxl

pip install openpyxl==2.6.3

希望它对您有帮助。

答案 10 :(得分:0)

就我而言,我收到此错误是因为我正在读取一个刚刚下载的非常大的文件。我在完成下载之前将其复制到另一个位置,因此在尝试读取不完整/损坏的文件时出现错误。

答案 11 :(得分:0)

对于我来说,我访问的文件以前是通过Workbook.save()方法打开过的,并且没有正确关闭。由于我正在调试代码,并且由于路径错误而导致此命令失败,因此文件已损坏。我不得不删除该文件,因为它无法还原,并创建了一个新文件。

答案 12 :(得分:0)

我遇到了同样的问题,感谢大家的提示。 我的问题是我打开的 excel .xlsx 文件已损坏。因此 openpyxl 无法打开。 我不得不重新创建文件。