首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在django中以HttpResponse的形式返回openpyxl工作簿对象。有可能吗?

在django中以HttpResponse的形式返回openpyxl工作簿对象。有可能吗?
EN

Stack Overflow用户
提问于 2015-10-19 14:40:37
回答 3查看 14.6K关注 0票数 21

我需要从django的数据库向访问者提供excel格式的数据。

我唯一能想到的方法就是通过这些步骤:

  1. 从数据库中提取数据。
  2. Workbook对象从openpyxl包装它。
  3. 暂时保存在某个地方。
  4. 再读一遍“rb”。
  5. 使用excel的mime类型返回视图。
  6. 删除磁盘上的excel文件。(现在没用了,对吧?)

这样就行了。但是,我认为还有更好的方法。我的意思是,也许有一种方法可以直接将openpyxl对象作为HttpResponse返回,而不需要中间文件介质。

所以,我这里的问题是:返回openpyxlWorbook对象可以吗?(我是openpyxl的新手)

EN

Stack Overflow用户

发布于 2020-07-19 03:45:33

由于save_virtual_workbook将过时,所以我使用了

代码语言:javascript
运行
复制
from openpyxl import Workbook
from tempfile import NamedTemporaryFile

def exportToExcel(request):
   workbook = Workbook()
   ...

   with NamedTemporaryFile() as tmp:
      workbook.save(tmp.name)
      tmp.seek(0)
      stream = tmp.read()

   response = HttpResponse(content=stream, content_type='application/ms-excel', )
   response['Content-Disposition'] = f'attachment; filename=ExportedExcel-{datetime.now().strftime("%Y%m%d%H%M")}.xlsx'
   return response
票数 7
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33217306

复制
相关文章

相似问题

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