Поврежденный файл Excel при обработке файла с использованием Django и openpyxl - PullRequest
0 голосов
/ 21 февраля 2020

У меня проблема с попыткой использовать мой файл Excel как httpresponse, он выходит почти в два раза больше и поврежден, когда я пытаюсь его открыть.

Мои настройки следующие:

  1. У меня есть шаблон Excel, который я делаю копию с использованием shutil2
  2. Затем я открываю копию с помощью load_workbook () в openpyxl
  3. Я заполняю книгу данными

Затем я (согласно документам openpyxl) сохраняю книгу в виде потока и сохраняю ее как объект httpresponse, который будет возвращен на мой сайт через django

with NamedTemporaryFile() as tmp:
    wb.save(tmp.name)
    tmp.seek(0)
    stream = tmp.read()

response = HttpResponse(content=stream, content_type="application/ms-excel")
# I've also tried with application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
response['Content-Disposition'] = 'attachment; filename=Excel.xls'
return response

In мой шаблон У меня есть jquery код, который загружает Excel для пользователя. Это делается после ответа на этот вопрос: Получить файл Excel (.xlsx) из ответа сервера в ajax

Это все работает нормально, но полученный файл загрузки поврежден и при этом Я ожидаю, что он будет размером около 7 МБ, на самом деле это 16 МБ.

Кто-нибудь знает, что я делаю неправильно?

1 Ответ

0 голосов
/ 03 марта 2020

Вы пытались открыть это в двоичном режиме? Это помогло мне. Я полагаю, что приведенный ниже код должен помочь:

с NamedTeoraryFile (mode = 'rb') в качестве tmp: ..

...