Я пытаюсь открыть файл Excel (.xls) с помощью xlrd. Это резюме коды я использую:Ошибка кодирования при открытии файла Excel с помощью xlrd
import xlrd
workbook = xlrd.open_workbook('thefile.xls')
Это работает для большинства файлов, но не для файлов, которые я получаю от конкретной организации. Ошибка, которую я получаю, когда я пытаюсь открыть файлы Excel из этой организации.
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/app/.heroku/python/lib/python2.7/site-packages/xlrd/__init__.py", line 435, in open_workbook
ragged_rows=ragged_rows,
File "/app/.heroku/python/lib/python2.7/site-packages/xlrd/book.py", line 116, in open_workbook_xls
bk.parse_globals()
File "/app/.heroku/python/lib/python2.7/site-packages/xlrd/book.py", line 1180, in parse_globals
self.handle_writeaccess(data)
File "/app/.heroku/python/lib/python2.7/site-packages/xlrd/book.py", line 1145, in handle_writeaccess
strg = unpack_unicode(data, 0, lenlen=2)
File "/app/.heroku/python/lib/python2.7/site-packages/xlrd/biffh.py", line 303, in unpack_unicode
strg = unicode(rawstrg, 'utf_16_le')
File "/app/.heroku/python/lib/python2.7/encodings/utf_16_le.py", line 16, in decode
return codecs.utf_16_le_decode(input, errors, True)
UnicodeDecodeError: 'utf16' codec can't decode byte 0x40 in position 104: truncated data
Это выглядит так, как будто xlrd пытается открыть файл Excel, закодированной в нечто иное, чем UTF-16. Как я могу избежать этой ошибки? Является ли файл написанным некорректным способом или существует только конкретный символ, который вызывает проблему? Если я открою и заново сохраню файл Excel, xlrd откроет файл без проблем.
Я попытался открыть книгу с другими ограничениями кодирования, но это тоже не сработает.
Файл Я пытаюсь открыть доступен здесь: сообщил здесь
Издание: https://github.com/python-excel/xlrd/issues/128
Я не уверен, что использует организация для записи файла Excel, хотя у меня есть вопрос к ним по этому вопросу. Я попробую ваш второй вариант, поскольку вы говорите, что он сработал для вас и опубликовал мои результаты. Я надеюсь, спасибо за отличный ответ. – Erik
Это отлично работало. Спасибо. – Erik
Я не могу наградить щедрот еще 15 часов - но тогда я это сделаю. Еще раз спасибо. – Erik