Как загрузить лист 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-файлы...

Я перепробовал много решений из интернета, но безуспешно.

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