Не удается загрузить книгу с помощью openpyxl: во время обработки вышеуказанного исключения произошло другое исключение
Я хочу отредактировать файл xlsx с помощью openpyxl 2.5.0.
Это мой код, и он работает с пустым файлом:
from openpyxl import load_workbook
wb = load_workbook(filename="Untitled.xlsx")
ws = wb.active
ws["B5"] = "test"
wb.save("Export.xlsx")
Однако, если я пытаюсь загрузить этот файл, я получаю следующую непонятную ошибку.
Traceback (most recent call last):
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\descriptors\base.py", line 57, in _convert
value = expected_type(value)
ValueError: invalid literal for int() with base 10: 'l'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Matteo\PyCharm\CMakeR\XLSXEditor.py", line 3, in <module>
wb = load_workbook(filename="Modulo CMR.xlsx")
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\reader\excel.py", line 274, in load_workbook
for c in find_charts(archive, rel.target):
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\chart\reader.py", line 43, in find_charts
drawing = SpreadsheetDrawing.from_tree(tree)
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\descriptors\serialisable.py", line 84, in from_tree
obj = desc.expected_type.from_tree(el)
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\descriptors\serialisable.py", line 84, in from_tree
obj = desc.expected_type.from_tree(el)
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\descriptors\serialisable.py", line 84, in from_tree
obj = desc.expected_type.from_tree(el)
[Previous line repeated 1 more times]
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\descriptors\serialisable.py", line 100, in from_tree
return cls(**attrib)
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\drawing\shapes.py", line 349, in __init__
self.l = l
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\descriptors\base.py", line 69, in __set__
value = _convert(self.expected_type, value)
File "C:\Matteo\PyCharm\CMakeR\venv\lib\site-packages\openpyxl\descriptors\base.py", line 59, in _convert
raise TypeError('expected ' + str(expected_type))
TypeError: expected <class 'int'>
Я действительно понятия не имею, что может быть причиной этого. Но из поиска в Интернете я понял, что это может быть связано с проблемой преобразования стиля / форматирования.
Благодаря Чарли Кларку я заметил, что - если я понижу openpyxl до 2.4.9 - я могу обойти эту проблему. Так что, похоже, какая-то ошибка связана с 2.5.0.
1 ответ
Решение
Сегодня похоже, что есть только два решения:
- Удалить графику из книги Excel.
- Перейдите на версию openpyxl < 2.5.0.
См. https://bitbucket.org/openpyxl/openpyxl/issues/967/expected-type-error-since-250