Не удается открыть файл Excel, созданный django - PullRequest
0 голосов
/ 09 мая 2020

Скажем, есть кадр данных из pandas, например:

                          mediabuy      cpa        mediabuy        cpc          
cost        2020-02         0.00       371929.95   15956581.16    16328511.11
            2020-04        1311.92     224747.07   26710431.81    26936490.80
total                      1311.92     596677.02   42667012.97     43265001.91

Я хочу создать файл excel в django, и я пробовал использовать коды, как показано ниже:


# return excel view


            df = pd.DataFrame(data, index=index, columns=column)

            # saved as excel
            excel_writer = pd.ExcelWriter(path='temp.xlsx', engine='openpyxl')
            df.to_excel(excel_writer)
            wb = excel_writer.book

            response = HttpResponse(save_virtual_workbook(wb))
            response["Content-Type"] = 'application/vnd.ms-excel'
            response['Content-Disposition'] = 'attachment; filename={}.xlsx'.format("data"))
            return response

Я работаю с python3.6.8, django2.2.4, pandas1.0.3, openpyxl3.0.3

Но я всегда получаю сообщение об ошибке: «Файл Excel не открывается, потому что формат файла или расширение файла не valid ".

Почему я получаю эту ошибку?

Спасибо.

1 Ответ

1 голос
/ 09 мая 2020

Если нет проблем со структурой данных в фрейме данных, вы можете добиться этого, используя:

from io import BytesIO

df = pd.DataFrame(data, index=index, columns=column)

stream_file = BytesIO()
df.to_excel(stream_file)
stream_file.seek(0)

response = HttpResponse(stream_file)
response["Content-Type"] = 'application/vnd.ms-excel'
response['Content-Disposition'] = 'attachment; filename={}.xlsx'.format("data")
return response
...