Ошибки Python OpenPyXL при сохранении файла

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

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

person HoRace    schedule 17.01.2020    source источник
comment
Можете ли вы поделиться соответствующим кодом? См. минимальный воспроизводимый пример.   -  person AMC    schedule 17.01.2020
comment
@AMC: Прошу прощения. Большая часть кода содержит конфиденциальную информацию о компании. Однако скрипт работал нормально, пока я не добавил следующие строки: wb = openpyxl.load_workbook ('C: \\ Users \\ NPL1SXR \\ Documents \\ Python \ NewAccounts \\ Export \\ AccountsNew.xlsx') ws = wb.active ws.delete_cols (ws.max_column) wb.save ('C: \\ Users \\ NPL1SXR \\ Documents \\ Python \\ NewAccounts \\ Export \\ AccountsNew.xlsx')   -  person HoRace    schedule 17.01.2020
comment
pip install -U openpyxl   -  person Charlie Clark    schedule 17.01.2020


Ответы (1)


По-видимому, моя проблема была в 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.01.2020 openpyxl 3.0.3 недоступен через conda, поэтому мне пришлось установить его с помощью pip.

>>> pip install --upgrade openpyxl

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

person HoRace    schedule 21.01.2020