我需要从django的数据库向访问者提供一个excel格式的数据。
我唯一能想到的方法就是用这些步骤:
- 从数据库中提取数据。
- 用
openpyxl
中的Workbook
对象包装它。 - 暂时保存在某处。
- 再念一遍“rb”。
- 使用excel's mime type返回视图。
- 删除磁盘上的excel文件。(现在没用了?)
应该可以。但是,我想还有更好的办法。我是说
也许有一种方法可以将openpyxl
对象直接返回为HttpResponse
没有中间文件介质。
所以,我的问题是:是否可以返回openpyxl
的Worbook
反对?(我是新来的openpyxl
)
Tags:
这对我有效
实际上不需要将数据保存在磁盘上的任何位置;openpyxl有一种方法可以做到这一点,尽管它没有很好的文档记录。很久以前,我使用xlwt创建了something like this,但最近我也使用openpyxl在Falcon框架中构建了类似的东西。
把这两个放在一起,你的代码看起来像是:
如果您正在生成更大的文件,我建议您考虑使用streamingttpresponse,但我相信这至少会让您继续。
这只是一个基于我工作过的两个项目合并的即兴片段,所以可能不完全正确。不过应该很接近。Falcon的输出看起来像:
更新: 现在更容易了,因为我使用openpyxl完全重写了我以前的
django-excel-response
库!现在可以在这里找到:https://github.com/tarkatronic/django-excel-response您可以使用
pip install django-excel-response
安装它,并开始使用它作为Django的HttpResponse
的替代品!包含的文档很少,欢迎改进/建议。:)相关问题 更多 >
编程相关推荐