'HttpResponse' 对象没有属性 'seek'

'HttpResponse' object has no attribute 'seek'

我想从 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)

有什么解决办法吗?

还行

我解决了

替换

attendance_workbook.save(response)

response.content = save_virtual_workbook(attendance_workbook)

documentation 中对此进行了介绍,并且是首选方法。

给定一个 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