Я хочу экспортировать из данных в Excel

И я попробую ниже код

def exel_all_attendance(request,course_id):
    all_submit_attendance = SubmitedAttendance.objects.filter(course_id=course_id)

    response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
    response['Content-Disposition'] = 'attachment; filename=course.xlsx'
    attendance_workbook = Workbook()
    attendance_worksheet = attendance_workbook.active
    attendance_worksheet.title = 'list_hozor_qiab'
    columns = [att.submit_time for att in all_submit_attendance.all()]
    row_num = 1
    for col_num, column_title in enumerate(columns, 1):
        cell = attendance_worksheet.cell(row=row_num, column=col_num)
        cell.value = column_title
    attendance_workbook.save(response)
    return response

Но я получаю эту ошибку

AttributeError: 'HttpResponse' object has no attribute 'seek'

А я проверил где ошибка?

attendance_workbook.save(response)

Любое решение?

1
motad333 27 Июн 2019 в 11:29

3 ответа

Лучший ответ

Ok

Я решаю это

Замещать

attendance_workbook.save(response)

Кому

response.content = save_virtual_workbook(attendance_workbook)
1
motad333 27 Июн 2019 в 08:34

Учитывая рабочую книгу OpenPyXL wb:

from tempfile import NamedTemporaryFile
from django.http import HttpResponse

with NamedTemporaryFile() as temporary_file:
    wb.save(temporary_file.name)
    temporary_file.seek(0)
    response = HttpResponse(temporary_file.read(), content_type='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename="course.xlsx"'
    return response

0
isedwards 12 Окт 2019 в 07:38

Это описано в документации и является предпочтительный подход.

1
Charlie Clark 27 Июн 2019 в 08:53