我正在尝试将一些数据下载/导出到Excel文件中。在我的视图/函数结束时,我有这个回报:
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename = "report.xls"'
response = render_to_response("facturas.html",context_instance=RequestContext(request), content_type='application/vnd.ms-excel')
book.save(response)
return response
我正在建立这是一个excel文件,文件的名称,我正在保存数据并返回响应
我正在函数的开头创建book变量:
book = xlwt.Workbook(encoding='utf8')
sheet = book.add_sheet('report')
然后应用一些风格等
正在发生的是该函数的导出部分正在下载“文件”类型而不是Excel文件。
如果您需要我添加视图的完整代码,我会添加它。
有谁知道为什么会这样??
任何建议都会非常欣赏。感谢
修改
我正在尝试导出的数据是在表格内部而且表格在表格内部(我有每行的复选框,用户可以选择要导出的文件,因此我创建了一个查询集选择的文件)
Form需要一个COntext_instance,这就是我使用render_to_response的原因。
如何在代码中更改此内容?
感谢所有答案。
答案 0 :(得分:1)
塞尔吉奥是对的。现在,您要覆盖(第3行)您在第1行和第2行制作的回复。您不需要render_to_response
。如果你想开始下载并返回一些HTML:这是不可能的。单个HTTP请求根本无法返回多个HTTP响应。
答案 1 :(得分:1)
第3行:
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename = "report.xls"'
response = render_to_response("facturas.html",context_instance=RequestContext(request), content_type='application/vnd.ms-excel')
book.save(response)
return response
您将HTTP文件作为下载文件返回,并丢失以前的设置。
删除第3行。