2013-09-02 2 views
1

Использование версии 0.9.2 из XLRD и Python 2.7 на Windows ...XLRD неподдерживаемый формат найден

Im создает временный файл, а затем чтение файла с помощью XLRD

data = self.excel_file 
path = default_storage.save('temp/temp.xls', ContentFile(data.read())) 
tmp_file = os.path.join(settings.MEDIA_ROOT, path) 
workbook = xlrd.open_workbook(tmp_file) 

Как только я пытаюсь и откройте файл XLS, который он возвращает, с ошибкой

xlrd.biffh.XLRDError: Unsupported format found '\xd0\xcf\x11\xe0\xa1\xb1\x00\x00' 

Таким образом, я думаю, что файл не был сохранен правильно выше или что-то в этом роде. Не уверен, что делать с этим, так как это работает при загрузке файла с помощью администратора django в поле файла.

Где сохранить файл, как это в Python Джанго модель создает проблемы выше:

from django.core.files import File 

p = Foo() 
p.excel_file.save(file_name, File(data)) 
p.save() 

ответ

1

Он смотрит на меня, как это может быть проблемой юникода. Я предполагаю, что в ваших строках есть символы, отличные от ASCII? попробуйте использовать .encode("utf-8") с вашими строками, когда вы сохраните их в xls.

EDIT: Это было предположение, после более тщательного изучения, проведенного @Harry, похоже, что это не правильное решение.

EDIT 2: Если файл не открывается Excel, как обсуждается ниже, то сами данные, вероятно, являются проблемой.

+0

Вы имеете в виду это> data.read(). Encode ("utf-8")? – Harry

+0

Да - это стоит того. –

+0

Что дает: UnicodeDecodeError: кодек 'ascii' не может декодировать байт 0xd0 в позиции 0: порядковый не в диапазоне (128) – Harry

Смежные вопросы