Проблема экспорта файла xls для загрузки пользователем с помощью django и HttpResponse - PullRequest
0 голосов
/ 13 июля 2011

В настоящее время я создаю электронную таблицу с использованием xlwt и пытаюсь экспортировать ее в виде HttpResponse в django для загрузки пользователем.Мой код выглядит следующим образом:

response = HttpResponse(mimetype = "application/vnd.ms-excel")
response['Content-Disposition'] = 'attachment; filename = %s +".xls"' % u'Zinnia_Entries'
work_book.save(response)
return response

Что, кажется, является правильным способом сделать это, но я получаю:

Traceback (most recent call last):
  File "C:\dev\workspace-warranty\imcom\imcom\wsgiserver.py", line 1233, in communicate
    req.respond()
  File "C:\dev\workspace-warranty\imcom\imcom\wsgiserver.py", line 745, in respond
    self.server.gateway(self).respond()
  File "C:\dev\workspace-warranty\imcom\imcom\wsgiserver.py", line 1927, in respond
    response = self.req.server.wsgi_app(self.env, self.start_response)
  File "C:\dev\workspace-warranty\3rdparty\django\core\servers\basehttp.py", line 674, in __call__
    return self.application(environ, start_response)
  File "C:\dev\workspace-warranty\3rdparty\django\core\handlers\wsgi.py", line 252, in __call__
    response = middleware_method(request, response)
  File "C:\dev\workspace-warranty\imcom\imcom\seo_mod\middleware.py", line 33, in process_response
    response.content = strip_spaces_between_tags(response.content.strip())
  File "C:\dev\workspace-warranty\3rdparty\django\utils\functional.py", line 259, in wrapper
    return func(*args, **kwargs)
  File "C:\dev\workspace-warranty\3rdparty\django\utils\html.py", line 89, in strip_spaces_between_tags
    return re.sub(r'>\s+<', '><', force_unicode(value))
  File "C:\dev\workspace-warranty\3rdparty\django\utils\encoding.py", line 88, in force_unicode
    raise DjangoUnicodeDecodeError(s, *e.args)
DjangoUnicodeDecodeError: 'utf8' codec can't decode byte 0xd0 in position 0: invalid continuation byte. You passed in 

(я остановил все остальное, потому что яполучить действительно длинную строку этого вида \ xd0 \ xcf \ x11 \ xe0 \ xa1 \ xb1 \ x1a \ xe1 \ x00)

У вас есть какие-нибудь идеи о том, что может быть не так в этом?Это потому, что некоторые из моих значений записи выглядят так:

work_sheet.write (r, #, information), где информация не преобразуется в Unicode?

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

Решил проблему. Видимо, кто-то положил в него что-то напуганное промежуточное программное обеспечение, которое разделялось, добавлялось и добавлялось, и так далее. ЭСТ. в файл. Когда это не должно

Во всяком случае, с этим покончено, файл экспортируется отлично.

@ Storm - Спасибо за помощь!

0 голосов
/ 13 июля 2011
response['Content-Disposition'] = 'attachment; filename = %s +".xls"' % u'Zinnia_Entries'

должно быть просто

response['Content-Disposition'] = 'attachment; filename = %s.xls' % u'Zinnia_Entries'

без кавычек вокруг .xls, иначе вывод будет

u'attachment; filename = Zinnia_Entries +".xls"'

Так что попробуйте изменить это.

Но также проверьте этот ответ. Он имеет действительно полезную небольшую функцию для вывода файлов XLS.

django excel xlwt

...