2015-12-31 2 views
3

Я работаю над скриптом в Windows и теперь, когда меняю платформу на Linux/Ubuntu, у меня возникают некоторые проблемы. В приведенном ниже примере я просто пытаюсь распечатать имена листов, но получаю некоторые ошибки, которые я никогда раньше не видел. Может быть, это проблема с Xlrd? Потому что я могу открыть файл Excel в Libreoffice.Python Xlrd read excel file error

Код:

#!/usr/bin/python 
import xlrd 

xl_workbook = xlrd.open_workbook('/home/ubuntu/Downloads/usage01.12.2015_31.12.2015.xls') 

sheet_names = xl_workbook.sheet_names() 
print('Sheet Names', sheet_names) 

Ошибка:

0 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
    20 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
    40= 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
    60 4 4 3 2 
Traceback (most recent call last): 
    File "./forbruk.py", line 4, in <module> 
    xl_workbook = xlrd.open_workbook('/home/ubuntu/Downloads/usage01.12.2015_31.12.2015.xls') 
    File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/__init__.py", line 441, in open_workbook 
    ragged_rows=ragged_rows, 
    File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/book.py", line 87, in open_workbook_xls 
    ragged_rows=ragged_rows, 
    File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/book.py", line 592, in biff2_8_load 
    cd.locate_named_stream(UNICODE_LITERAL(qname)) 
    File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/compdoc.py", line 390, in locate_named_stream 
    d.tot_size, qname, d.DID+6) 
    File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/compdoc.py", line 418, in _locate_stream 
    raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s])) 
xlrd.compdoc.CompDocError: Workbook corruption: seen[2] == 4 
+0

Может быть, попробуйте использовать другое имя типа '' snames' потому что sheet_names' является методом класса чтения. –

+0

Не могли бы вы напечатать имена листов по индексу, 'print sheet_names.sheet_by_index (0)', но я думаю, что проблема связана с вашим файлом excel. – python

+0

Я получаю ошибки только при наличии строки «xl_workbook = xlrd.open_workbook». Я довольно смущен, так как я могу открыть файл excel в LibreOffice без каких-либо проблем. – user3580316

ответ

2

Если вам нужны данные от удаленного сервиса, это хак, но закомментировать строки 418 (raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s]))) в compdoc.py, кажется, работает хорошо.

Также смотрите в эту документацию source

+0

Это не было. Самое забавное, что я могу прочитать файл excel в Windows, но не в Ubuntu с Xlrd. Нет никаких ошибок с файлом, который кажется. – user3580316

+0

Я прямо сейчас, вы можете отправить мне свой файл? Загрузите где-нибудь и дайте мне ссылку? – python