【发布时间】:2020-06-05 07:41:14
【问题描述】:
我在尝试将我的 excel 文件作为 httpresponse 提供时遇到问题,它的大小几乎翻了一番,并且在我尝试打开它时已损坏。
我的设置如下:
- 我有一个 Excel 模板,我使用 shutil2 制作了一份副本
- 然后我在 openpyxl 中使用 load_workbook() 打开副本
- 我用数据填充工作簿
然后我(根据 openpyxl 文档)将工作簿保存为流并将其保存为 httpresponse 对象以通过 django 返回到我的网站
with NamedTemporaryFile() as tmp:
wb.save(tmp.name)
tmp.seek(0)
stream = tmp.read()
response = HttpResponse(content=stream, content_type="application/ms-excel")
# I've also tried with application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
response['Content-Disposition'] = 'attachment; filename=Excel.xls'
return response
在我的模板中,我有一些为用户下载 excel 的 jquery 代码。这是按照这个问题的答案完成的:Get excel file (.xlsx) from server response in ajax
这一切正常,但生成的下载文件已损坏,虽然我预计它的大小约为 7mb,但实际上是 16mb。
有人知道我做错了什么吗?
【问题讨论】: