python - Openpyxl Workbook.save 函数创建损坏且无法打开的 Excel (.xlsx) 文件
问题描述
我曾尝试使用August William 的解决方案来解决这个问题,但这也没有用。我没有切换工作簿类型,即 .xlsm 到 .xlsx,这似乎是一个单独的问题。我查看了Openpyxl 的手册,试图找到错误报告或错误修复,但无济于事。下面是我非常简单的代码。接下来是 python 错误消息,导致创建工作簿,但它已损坏并且无法加载。任何帮助表示赞赏。-谢谢!!
from openpyxl import Workbook
dashbrd = Workbook()
fp = dashbrd.active
fp.title = 'Sheet Name Goes Here'
fp['A1'] = 'Header'
fp['B1'] = '2nd Header'
fp['C1'] = '3rd Header'
fp['D1'] = '4th Header'
fp['E1'] = '5th Header'
fp['F1'] = 'You get the idea'
fp['G1'] = 'Another Header'
fp['H1'] = 'Blah blah blah'
fp['I1'] = 'Yadda yadda yadda'
dashbrd.save("S:\\folder1\\folder2\\folder3\\MyBook.xlsx")
**************************************************************************************
Traceback (most recent call last):
File "C:\Users\NotaDirtyUser\Documents\Scripts\HeaderTest.py", line 26, in <module>
dashbrd.save("S:\\folder1\\folder2\\folder3\\MyBook.xlsx")
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\workbook\workbook.py", line 408, in save
save_workbook(self, filename)
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\writer\excel.py", line 293, in save_workbook
writer.save()
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\writer\excel.py", line 275, in save
self.write_data()
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\writer\excel.py", line 75, in write_data
self._write_worksheets()
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\writer\excel.py", line 215, in _write_worksheets
self.write_worksheet(ws)
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\writer\excel.py", line 200, in write_worksheet
writer.write()
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\_writer.py", line 354, in write
self.write_top()
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\_writer.py", line 98, in write_top
self.write_properties()
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\_writer.py", line 60, in write_properties
self.xf.send(props.to_tree())
File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\_writer.py", line 294, in get_stream
xf.write(el)
File "src/lxml/serializer.pxi", line 1652, in lxml.etree._IncrementalFileWriter.write
TypeError: got invalid input value of type <class 'xml.etree.ElementTree.Element'>, expected string or Element
解决方案
就像我上面说的,昨天我遇到了同样的问题..我在这个链接中找到了解决方案:
https://python-forum.io/Thread-Need-help-in-understanding-this-particular-Traceback-TypeError
参考此错误: TypeError: got invalid input value of type , expected string or Element
总之,解决方案是将 openpyxl 安装到另一个版本:
pip uninstall openpyxl
pip install openpyxl==3.0.1
推荐阅读
- php - Laravel 资源附加本地修改的属性
- javascript - 需要拆分字符串逗号分隔,包括圆括号
- mysql - 如何禁用 MySQL histignore?
- php - 从显示每个用户记录的数据库中检索数据 - Laravel
- javascript - 根据工作日数获取工作日数组
- xml - XSD 将复杂元素定义为强制但所有子元素都是可选的是否有效?
- java - 既然不推荐使用 android 命令,我应该如何在没有 android studio 的情况下创建 android 应用程序
- sql - 将行插入另一个数据库时如何在一个数据库中获取信息?
- java - CodenameOne BrowserComponent 不适用于 UWP 构建
- apache-spark - Apache Spark 中的最小单位是块吗?