xlrd не может прочитать файл xlsx, загруженный из вложения электронной почты

Это очень очень странная проблема. У меня есть довольно большой файл excel (содержимое которого я не могу обсуждать, поскольку это конфиденциальные данные), который является .xlsx и является допустимым файлом excel.

Когда я загружаю его из своей электронной почты, сохраняю на рабочем столе и пытаюсь открыть книгу с помощью xlrd, xlrd выдает AssertionError и не показывает мне, что пошло не так.

Когда я открываю файл с помощью своего файлового браузера, а затем сохраняю его (без внесения каких-либо изменений), он отлично работает с xlrd.

Кто-нибудь сталкивался с этой проблемой раньше? Я пытался передать различные флаги функции open_workbook безрезультатно, и я попытался найти ошибку в Google. Пока я ничего не нашел.

Метод, который я использовал, был следующим


    file = open('bigexcelfile.xlsx')
    fileString = file.read()
    wb = open_workbook(file_contents=filestring)

Пожалуйста помоги! Ошибка заключается в следующем


    Traceback (most recent call last):
      File "./varify/samples/resources.py", line 354, in post
        workbook = xlrd.open_workbook(file_contents=fileString)
      File "/home/vagrant/varify-env/lib/python2.7/site-packages/xlrd/__init__.py", line 416, in open_workbook
        ragged_rows=ragged_rows,
      File "/home/vagrant/varify-env/lib/python2.7/site-packages/xlrd/xlsx.py", line 791, in open_workbook_2007_xml
        x12sheet.process_stream(zflo, heading)
      File "/home/vagrant/varify-env/lib/python2.7/site-packages/xlrd/xlsx.py", line 528, in own_process_stream
        self_do_row(elem)
      File "/home/vagrant/varify-env/lib/python2.7/site-packages/xlrd/xlsx.py", line 722, in do_row
        assert tvalue is not None
    AssertionError


person user2654569    schedule 28.04.2014    source источник
comment
xlrd может читать только .xls, но не .xlsx.   -  person SethMMorton    schedule 28.04.2014
comment
Я знаю, что вы задавали этот вопрос некоторое время назад, но содержит ли файл Excel какие-либо пустые ячейки с включенной функцией переноса текста?   -  person Mike    schedule 02.12.2014
comment
xlrd теперь может читать .xlsx.   -  person nekomatic    schedule 12.05.2016


Ответы (2)


переименуйте или сохраните файл Excel как .xls вместо .xlsx. Спасибо.

person Mohideen bin Mohammed    schedule 10.04.2015

Используйте pyopenxl, а не xlrd для этого формата: https://openpyxl.readthedocs.org/en/latest/

person Charles Duffy    schedule 20.07.2015