Как я могу генерировать вывод в формате 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>