Почему возникает ошибка при загрузке xlsx файла с использованием библиотеки openpyxl?

Никак не могу разобраться в причине ошибки при загрузке файла.. При попытке открыть и провести операцию над файлом:

from openpyxl import load_workbook

wb = load_workbook('test.xlsx')
sheet = wb.worksheets[0]
print (sheet.max_row)

Возникает следующая ошибка:

C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\styles\stylesheet.py:214: UserWarning: Workbook contains no default style, apply openpyxl's default
  warn("Workbook contains no default style, apply openpyxl's default")
Traceback (most recent call last):
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\descriptors\base.py", line 55, in _convert
    value = expected_type(value)
ValueError: could not convert string to float: '10,7142857142857'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\CodeLearning\Python\minitest.py", line 3, in <module>
    wb = load_workbook('test.xlsx')
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\reader\excel.py", line 315, in load_workbook
    reader.read()
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\reader\excel.py", line 280, in read
    self.read_worksheets()
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\reader\excel.py", line 228, in read_worksheets
    ws_parser.bind_all()
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\worksheet\_reader.py", line 438, in bind_all
    self.bind_col_dimensions()
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\worksheet\_reader.py", line 410, in bind_col_dimensions
    self.ws.column_dimensions[col] = ColumnDimension(self.ws, **cd)
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\worksheet\dimensions.py", line 150, in __init__
    self.width = width
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\descriptors\base.py", line 67, in __set__
    value = _convert(self.expected_type, value)
  File "C:\Users\I\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\descriptors\base.py", line 57, in _convert
    raise TypeError('expected ' + str(expected_type))
TypeError: expected <class 'float'>

При чем, если открыть файл Excel вручную и что-то в нем поменять (например удалить последнюю строку), то код срабатывает нормально.

Гуглил проблему, но все что нашел это аналогичный вопрос датированный серединой 2018 года. На тот момент предложили два решения - скачать версию openpyxl ранее 2.5.0 или удалить стили/фильтры в документе Excel.

Может кто-то сталкивался? есть иные пути решения? Из-за чего возникает ошибка?


Ответы (0 шт):