zw1*_*1ck 6 python python-2.7 openpyxl
我试图打开xlsx文件和xlsm文件都给我同样的错误
badzipfile: file is not a zip file
Run Code Online (Sandbox Code Playgroud)
这是我正在输入的内容:
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')
Run Code Online (Sandbox Code Playgroud)
两个load_workbook命令都会导致相同的错误.它们都存在于那个位置.为什么我收到此错误?
小智 8
如果您openpyxl.load_workbook使用类文件对象调用,请确保以二进制模式打开它。
小智 7
同样的问题发生在我身上,然后我注意到以下几点:
当我创建从文件管理器的.xlsx文件,通过创建的.xlsx格式的新文档,我有同样的错误.但是当我在我的情况下用一些电子表格软件(libreoffice-calc)创建文件时,它运行正常.我希望这可能有所帮助.
小智 7
我做了一些非常愚蠢的事情并得到了同样的错误。基本上,今天是我第一次尝试这个,我让它与“自动化”示例一起工作,然后尝试了我的 Excel。没用!我花了一段时间才意识到错误是由于工作簿密码受到保护。该错误根本不匹配,但是当我从工作簿中删除保护时,它起作用了!除了“duh”和“yeah!”,我还能说什么?
小智 6
您尝试打开的 XLSX 或 XLS 或 XLSM 文件是以“~”开头的 Excel 恢复文件。您可以通过以下方式检查:
for file in path.glob('*.xlsx'):print(file)
Run Code Online (Sandbox Code Playgroud)
您可以通过检查跳过这些文件,从完整路径获取文件名:
filename=str(filename).split("\\")[-1:][0]
Run Code Online (Sandbox Code Playgroud)
检查文件名是否以“~”开头,因为所有恢复文件都以“~”开头
if filename[0]!="~"
Run Code Online (Sandbox Code Playgroud)
这是因为您创建了没有元数据的空.xlsx,这是没有单元格格式的空文件。使用exel或等效的电子表格软件将空文件保存在该目录中,该文件将在保存后创建具有单元格格式的xlsx文件,然后尝试使用openpyxl加载文件
我参加聚会迟到了,但我收到了同样的错误,但原因不同。
在我的 Mac 上,当我将 .xlsx 文件剪切并粘贴到我想要的目录中时,它实际上并没有放置文件本身,而是放置了一个符号链接。出于某种原因,这会引发同样的错误。我通过打开文件并使用“另存为”来解决这个问题。
小智 3
我的预感是您的 openpyxl 版本不是最新的(2.3.1)或者您的源文件有问题。要升级到 openpyxl 的最新版本,请使用:
pip install openpyxl --upgrade
Run Code Online (Sandbox Code Playgroud)
源文件是否已加密?
| 归档时间: |
|
| 查看次数: |
14016 次 |
| 最近记录: |