Anaconda环境下使用openpyxl读取Excel时出现BadZipFile错误求助
问题描述
我是Python新手,正在学习用openpyxl包实现Excel自动化。读取文件transactions.xlsx时触发了BadZipFile错误,代码和报错信息如下:
代码
import openpyxl as xl wb= xl.load_workbook('transactions.xlsx') sheet = wb ['Sheet1'] cell = sheet['a1'] print(cell.value)
报错信息
PS C:\Users\ryan\helloworld> & C:/Users/ryan/anaconda3/python.exe c:/Users/ryan/helloworld/app.py Traceback (most recent call last): File "c:\Users\ryan\helloworld\app.py", line 2, in <module> wb= xl.load_workbook('transactions.xlsx') File "C:\Users\ryan\anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 124, in __init__ self.archive = _validate_archive(fn) File "C:\Users\ryan\anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 96, in _validate_archive archive = ZipFile(filename, 'r') File "C:\Users\ryan\anaconda3\lib\zipfile.py", line 1267, in __init__ self._RealGetContents() File "C:\Users\ryan\anaconda3\lib\zipfile.py", line 1334, in _RealGetContents raise BadZipFile("File is not a zip file") zipfile.BadZipFile: 文件不是有效的zip文件
解决办法
- 验证文件格式有效性:
xlsx本质是压缩包结构,把文件后缀改成.zip尝试解压,如果解压失败,说明文件本身不是有效的xlsx(比如后缀改了但实际是txt、文件损坏、下载不完整)。 - 核对文件路径:
脚本用的是相对路径,确保transactions.xlsx和app.py在同一个文件夹C:\Users\ryan\helloworld里。如果不在,直接写完整绝对路径,比如wb= xl.load_workbook('C:/Users/ryan/Documents/transactions.xlsx')。 - 修复或重新获取文件:
若文件损坏,打开Excel重新保存一次(确保选.xlsx格式,openpyxl不支持旧版.xls),或者重新下载/复制原始文件。 - 关闭占用文件的程序:
如果Excel还打开着这个文件,会导致openpyxl无法正常读取,先关闭Excel再运行脚本。
内容的提问来源于stack exchange,提问作者frentych
相关产品推荐
相关产品推荐

