Python Ошибки OpenPyXL при сохранении файла - PullRequest
0 голосов
/ 17 января 2020

Я только начал изучать Python в октябре, и я не уверен, как поступить. У меня есть скрипт, который работал нормально, пока я не добавил код для openpyxl, чтобы открыть файл Excel, удалить последний (ненужный) столбец, а затем сохранить файл. Все работает нормально, пока скрипт не доберется до "wb.save ( filename )"; Я получаю ошибки, перечисленные ниже.

Я пробовал скрипт на 2 Windows 10 ПК, оба с Anaconda3 (2019-07), Python 3.7.6. У меня openpyxl 3.0.0 на одном из компьютеров и 3.0.2 на другом. P C с 3.0.2 был бесплатной установкой Anaconda sh, просто чтобы увидеть, была ли проблема с существующей установкой на другом P C. Я также пытался удалить и переустановить 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

Ответы [ 2 ]

1 голос
/ 21 января 2020

Очевидно, моя проблема была с openpyxl версии 3.0.0 или новее. Удаление openpyxl 3.0.2 привело к удалению более 30 других пакетов. После переустановки других пакетов один за другим я смог установить openpyxl 2.6.2. Больше ошибок нет!

>>> conda install openpyxl==2.6.2

Отредактировано примерно через 3 часа после моего исходного поста «Ответить», когда я наткнулся на эту страницу: https://bitbucket.org/openpyxl/openpyxl/issues/1373. Ошибки точно такие же, как в моем первоначальном посте. Проблема была с openpyxl 3.0.2 специально. По состоянию на 21.012020 openpyxl 3.0.3 не доступен через conda, поэтому мне пришлось установить его с pip.

>>> pip install --upgrade openpyxl

Протестировал его с моим оригинальным скриптом и без ошибок.

0 голосов
/ 17 января 2020
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...