首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Django和openpyxl服务文件时损坏excel文件

使用Django和openpyxl服务文件时损坏excel文件
EN

Stack Overflow用户
提问于 2020-02-20 21:55:40
回答 1查看 535关注 0票数 0

当我试图将excel文件作为httpresponse服务时,我有一个问题,它的大小几乎是我的两倍,当我试图打开它时,它是腐败的。

我的设置如下:

  1. I有一个excel模板,我制作了一个使用shutil2
  2. 的副本,然后在openpyxl
  3. 中使用load_workbook()打开该副本,然后用data

填充工作簿。

然后(按照openpyxl文档)将工作簿保存为流,并将其保存为httpresponse对象,通过django返回到我的网站。

代码语言:javascript
运行
复制
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

在我的模板中,我有一些jquery代码,它为用户下载excel。以下是这个问题的答案:Get excel file (.xlsx) from server response in ajax

这一切都很好,但是所产生的下载文件已经损坏,虽然我预计它的大小大约为7 7mb,但实际上它的大小是16 7mb。

有人知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2020-03-02 21:53:04

您试过在二进制模式下打开这个吗?这对我有帮助。我相信下面的代码会有所帮助:

使用NamedTemporaryFile(mode='rb')作为tmp:.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60329111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档