我使用 openpyxl 在 python 中处理 excel 文档。打开并保存文件后,我无法在文件管理器中打开它,它已损坏。
workbook = openpyxl.load_workbook(path_to_tmp_xlsm)
workbook.save(path_to_tmp_xlsm)
print(path_to_tmp_xlsm)
我的错误:
list index out of range
ps 这个脚本在 Windows 下运行正常,但是在 Linux 下我有这个错误
Traceback (most recent call last):
File "/home/alex/projects/bokapi/Main.py", line 11, in <module>
class Main:
File "/home/alex/projects/bokapi/Main.py", line 12, in Main
EmailsDriveWorker()
File "/home/alex/projects/bokapi/app/EmailDriveWorker.py", line 33, in __init__
self.log_manager.save_all_companies_inf_log_to_gd()
File "/home/alex/projects/bokapi/app/EmailDriveWorker.py", line 202, in save_all_companies_inf_log_to_gd
path_to_xlsx = self.xmsl_box.update_log_file(log_list=logs, file=self.file)
File "/home/alex/projects/bokapi/xmsl/XmslBox.py", line 172, in update_log_file
workbook.save(path_to_tmp_xlsm)
File "/home/alex/projects/bokapi/venv/lib/python3.5/site-packages/openpyxl/workbook/workbook.py", line 367, in save
save_workbook(self, filename)
File "/home/alex/projects/bokapi/venv/lib/python3.5/site-packages/openpyxl/writer/excel.py", line 284, in save_workbook
writer.save(filename)
File "/home/alex/projects/bokapi/venv/lib/python3.5/site-packages/openpyxl/writer/excel.py", line 266, in save
self.write_data()
File "/home/alex/projects/bokapi/venv/lib/python3.5/site-packages/openpyxl/writer/excel.py", line 95, in write_data
archive.writestr(ARC_WORKBOOK, write_workbook(self.workbook))
File "/home/alex/projects/bokapi/venv/lib/python3.5/site-packages/openpyxl/writer/workbook.py", line 95, in write_workbook
wb.views[0].activeTab = active
IndexError: list index out of range
Process finished with exit code 1
最佳答案
你(和我)似乎遇到了这个错误:Saving workbook gives IndexError on wb.views . (也报告了 here ,但是那个被关闭了,因为 OP 无法重现。)好消息是这个错误已经修复了......两周前。我不知道它什么时候会出现在 openpyxl 的分布式版本中,但与此同时你可以像这样解决这个错误:
wb = load_workbook("name.xlsx")
# Fix malformed workbook bug (gag)
if not wb.views:
wb.views.append(openpyxl.workbook.views.BookView())
我已验证当 wb.views
为空列表时会发生错误。这只是添加了一个具有默认值的新 View ,Excel 似乎很喜欢它。
附言。似乎有些文件只是不存储 View (或者如果它们存储 View ,openpyxl
无法解析它。)在我的例子中,相同的脚本,在同一台计算机(OS X)上,工作在一个文档上,在另一个文档上失败。两者最后都是用 Excel 编辑的,但问题文件之前是用 OpenOffice 编写的;也许这是相关的。
关于python - 加载和保存列表索引超出范围后的openpyxl(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48669695/