Как я могу генерировать вывод в формате excel из django python

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

import pandas as pd
import csv, io, xlsxwriter
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse, FileResponse

def print_excel(request)
    products = Product.objects.all()
    df = pd.DataFrame(list(products.values()))
    excel_file = io.BytesIO()
    xlwriter = pd.ExcelWriter(excel_file, engine='xlsxwriter')
    df.to_excel(xlwriter, 'sheetname')
    xlwriter.save()
    #xlwriter.close()
    excel_file.seek(0)

    response = HttpResponse(excel_file.read(), content_type='application/ms-excel vnd.openxmlformats-officedocument.spreadsheetml.sheet')
    # set the file name in the Content-Disposition header
    response['Content-Disposition'] = 'attachment; filename=myfile.xls'
    return response  

Я также попробовал следующее приближение, в котором я пытался вывести excel со строкой rows

import pandas as pd
import csv, io, xlsxwriter
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse, FileResponse

def print_excel(request)
    buffer = io.BytesIO()
    workbook = xlsxwriter.Workbook(buffer)
    worksheet = workbook.add_worksheet()
    worksheet.write('A1', "rows")
    workbook.close()
    buffer.seek(0)

    return FileResponse(buffer, as_attachment=True, filename='myfile.xlsx')

Два кода выполняются правильно, но я не могу найти созданный файл excel.

Код в порядке, проблема может быть связана с запросом get... Если вы используете запрос get через JavaScript, вы получите ошибку. Чтобы Fileresponse и HttpResponse работали правильно и генерировали необходимые файлы, убедитесь, что запрос get генерируется непосредственно из html шаблона, т.е. используйте <a href="">Generate Excel</a>

Вернуться на верх