Python 保存文件时出现 OpenPyXL 错误
Python OpenPyXL Errors When Saving File
我在 10 月份才开始学习 Python,我不确定如何进行。我有一个 运行 很好的脚本,直到我为 openpyxl 添加了一些代码以打开 Excel 文件,删除最后一个(不需要的)列,然后保存文件。一切正常,直到脚本到达 "wb.save(filename)";我收到下面列出的错误。
我已经在 2 Windows 10 台 PC 上尝试了该脚本,均使用 Anaconda3 (2019-07),Python 3.7.6。我在其中一台 PC 上安装了 openpyxl 3.0.0,在另一台上安装了 3.0.2。安装了 3.0.2 的 PC 是 Anaconda 的全新安装,只是为了看看问题是否出在另一台 PC 上的现有安装上。我也尝试卸载并重新安装 openpyxl,但仍然出现错误。任何帮助将不胜感激。
Traceback (most recent call last):
File "C:\Users\npl1sxr\Documents\Python\NewAccounts\qptAccounts.py", line 130, in <module>
makeExcelFiles(df, wedt, westdt)
File "C:\Users\npl1sxr\Documents\Python\NewAccounts\qptAccounts.py", line 65, in makeExcelFiles
wb.save('C:\Users\NPL1SXR\Documents\Python\NewAccounts\Export\AccountsNew.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
Visit this link [answer](https://python-forum.io/Thread-Need-help-in-understanding-
this-particular-Traceback-TypeError)
This Problem come due to openpyxl=3.0.2
Switch back to openpyxl=3.0.1
>>> conda remove openpyxl
>>> conda install openpyxl==3.0.1
或
>>> pip uninstall openpyxl
>>> pip install openpyxl==3.0.1
显然我的问题是 openpyxl 版本 3.0.0 或更高版本。删除 openpyxl 3.0.2 导致 30 多个其他包被删除。一个一个地重新安装其他软件包后,我能够安装 openpyxl 2.6.2。没有更多错误!
>>> conda install openpyxl==2.6.2
在我最初 "Answer" post 大约 3 小时后编辑,当我看到这个页面时:https://bitbucket.org/openpyxl/openpyxl/issues/1373。错误与我最初的 post 完全相同。问题出在 openpyxl 3.0.2 上。截至 2020 年 1 月 21 日,openpyxl 3.0.3 无法通过 conda 使用,因此我不得不使用 pip 安装。
>>> pip install --upgrade openpyxl
用我原来的脚本测试没有错误。
我在 10 月份才开始学习 Python,我不确定如何进行。我有一个 运行 很好的脚本,直到我为 openpyxl 添加了一些代码以打开 Excel 文件,删除最后一个(不需要的)列,然后保存文件。一切正常,直到脚本到达 "wb.save(filename)";我收到下面列出的错误。
我已经在 2 Windows 10 台 PC 上尝试了该脚本,均使用 Anaconda3 (2019-07),Python 3.7.6。我在其中一台 PC 上安装了 openpyxl 3.0.0,在另一台上安装了 3.0.2。安装了 3.0.2 的 PC 是 Anaconda 的全新安装,只是为了看看问题是否出在另一台 PC 上的现有安装上。我也尝试卸载并重新安装 openpyxl,但仍然出现错误。任何帮助将不胜感激。
Traceback (most recent call last):
File "C:\Users\npl1sxr\Documents\Python\NewAccounts\qptAccounts.py", line 130, in <module>
makeExcelFiles(df, wedt, westdt)
File "C:\Users\npl1sxr\Documents\Python\NewAccounts\qptAccounts.py", line 65, in makeExcelFiles
wb.save('C:\Users\NPL1SXR\Documents\Python\NewAccounts\Export\AccountsNew.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
Visit this link [answer](https://python-forum.io/Thread-Need-help-in-understanding-
this-particular-Traceback-TypeError)
This Problem come due to openpyxl=3.0.2
Switch back to openpyxl=3.0.1
>>> conda remove openpyxl
>>> conda install openpyxl==3.0.1
或
>>> pip uninstall openpyxl
>>> pip install openpyxl==3.0.1
显然我的问题是 openpyxl 版本 3.0.0 或更高版本。删除 openpyxl 3.0.2 导致 30 多个其他包被删除。一个一个地重新安装其他软件包后,我能够安装 openpyxl 2.6.2。没有更多错误!
>>> conda install openpyxl==2.6.2
在我最初 "Answer" post 大约 3 小时后编辑,当我看到这个页面时:https://bitbucket.org/openpyxl/openpyxl/issues/1373。错误与我最初的 post 完全相同。问题出在 openpyxl 3.0.2 上。截至 2020 年 1 月 21 日,openpyxl 3.0.3 无法通过 conda 使用,因此我不得不使用 pip 安装。
>>> pip install --upgrade openpyxl
用我原来的脚本测试没有错误。