Как загрузить лист Excel с сервера с помощью openpyxl на Django?
мой Frontend вызывает Django-сервер через AJAX get HTTP Request для экспорта данных из базы данных в excel-файл. Поэтому я использую openpyxl. Я хочу загрузить HTTP-ответ на стороне клиента, но получаю только файлы excel, которые не могу открыть или с неопределенными данными.
вот мой запрос javascript:
$.ajax({
url: '/documentation/export/get' + '/' + var_1 + '/' + var_2,
type: 'get',
responseType: 'blob',
success: function(response) {
console.log("EXCEL Success")
// var contentType = 'application/vnd.ms-excel';
var contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
var filename = "TEST.xlsx"
var blob = new Blob([response], { type: contentType });
var downloadUrl = URL.createObjectURL(blob);
var a = document.createElement("a");
a.href = downloadUrl;
a.download = filename;
document.body.appendChild(a);
a.click();
}
});
Вот мой серверный код на python, views.py:
from openpyxl import Workbook
def documentation_export (request, var_1, var_2):
excel_data = [
['header1', 'header2', 'header3', 'header4', 'header5'],
[1,4,5,6,7],
[5,6,2,4,8]
]
if excel_data:
wb = Workbook(write_only=True)
ws = wb.create_sheet()
for line in excel_data:
ws.append(line)
response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
# response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=mydata.xlsx'
wb.save(response)
return response
Данные для excelfile / рабочей книги в настоящее время все еще являются примером из интернета.
Если я использую код в том виде, в котором он опубликован, загрузка вообще не начинается. Если я использую закомментированный "vnd.ms-excel", то получаю битые excel-файлы...
Я перепробовал много решений из интернета, но безуспешно.