Python openpyxl.load_workbook excel file error 解决方法
HDUZN

这个错误是在我频繁load excel文件,写入内容的时候出现的,循环要写入上千页的内容,每页写一次,然后写了上百次之后,就每写入几次就报这个错了。

windows10 的环境有这个问题,在 linux(ubuntu) 上运行同样的代码并没有这个问题。

错误提示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Traceback (most recent call last):
File "g:\SynologyDrive\Python\code2\funds\open_funds_details.py", line 54, in <module>
main()
File "g:\SynologyDrive\Python\code2\funds\open_funds_details.py", line 49, in main
one_open_fund.insert_one_fund_into_excel(ex_details_file, data_list, position_sheet, info_sheet)
File "g:\SynologyDrive\Python\code2\funds\one_open_fund.py", line 203, in insert_one_fund_into_excel
book = openpyxl.load_workbook(ex_file)
File "C:\Python39\lib\site-packages\openpyxl\reader\excel.py", line 315, in load_workbook
reader = ExcelReader(filename, read_only, keep_vba,
File "C:\Python39\lib\site-packages\openpyxl\reader\excel.py", line 124, in __init__
self.archive = _validate_archive(fn)
File "C:\Python39\lib\site-packages\openpyxl\reader\excel.py", line 96, in _validate_archive
archive = ZipFile(filename, 'r')
File "C:\Python39\lib\zipfile.py", line 1257, in __init__
self._RealGetContents()
File "C:\Python39\lib\zipfile.py", line 1324, in _RealGetContents
raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file

这个错误主要是由于下面这行代码引起的:

1
book = openpyxl.load_workbook(ex_file)

网上查了下,打开excel 文件时,改用安全的打开方式就行了。
用安全的打开、关闭方法就不会有这些小问题了。

安全的打开Excel

  • 如果已经存在原文件,就直接load;
  • 如果不存在,就新建workbook。

安全的保存Excel

1
2
book.save(ex_file) # 写入内容,保存文件 save
book.close() # 不需要写入内容,打开过文件要 close

解决方法

把原来那一句代码改成以下代码:

1
2
3
4
5
6
import os
import openpyxl
if os.path.exists(ex_file):
book = openpyxl.load_workbook(ex_file)
else:
book = openpyxl.Workbook()

注:我这里的ex_file 是绝对路径,比如:G:\Drive\funds\test1.xlsx

  • 本文标题:Python openpyxl.load_workbook excel file error 解决方法
  • 本文作者:HDUZN
  • 创建时间:2021-02-17 21:05:00
  • 本文链接:http://hduzn.cn/2021/02/17/Python-openpyxl.load_workbook-excel-file-error/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论