求 aiohttp 后端 直接生成 exl 下载 的 demo ,实在找不到材料。。

2020-08-17 21:15:56 +08:00
 naldo0193

求 aiohttp 后端 直接生成 xlsx 和响应下载的 demo,实在找不到教程。。

另外请问各位对于自己不熟悉库,有什么技巧能较系统了解这个库。

2195 次点击
所在节点    Python
14 条回复
supermoonie
2020-08-18 00:56:16 +08:00
aio 不是 windows 玩的转吗,linux 服务器大多是 nio 吧,不熟悉的话就找找书系统看下
qile1
2020-08-18 01:09:21 +08:00
datatable 有个导出 excel 和复制及打印的按钮,你参考下看是否类似
fy
2020-08-18 01:42:31 +08:00
?这跟框架没关系,抄起 openxlsx 一把梭然后 response 写 bytes 就行了
Vegetable
2020-08-18 01:55:33 +08:00
搞不懂你们为什么用 aiohttp 直接做 server...
你的重点应该是怎么生成一个 excel 保存在内存中。这个要看你什么库,以 openpyxl 为例
正常时 wb.save(filename)
你用
body = BytesIO()
wb.save(body)
将 xls 变成一个字节码,在把这个字节码返回,设置好文件名和 mimetype 就行了。
so1n
2020-08-18 09:02:44 +08:00
@supermoonie 在 linux 用 epoll 在 win 好像是 select
fasionchan
2020-08-18 11:05:57 +08:00
supermoonie
2020-08-18 11:36:12 +08:00
@so1n win 的 aio 支持走在了前面
boolking
2020-08-18 13:32:44 +08:00
xlsx 就是一个 zip 文件,里面都是 xml,大部分 xml 可以用默认值,sheet1.xml 放工作簿 1,可以流式生成,不需要临时文件。我写的一个 go 版本的: https://gist.github.com/boolking/0c920aab2dc6713150dab35cd02e3367

xlsx 的中 xml 的格式可以参考: https://www.ecma-international.org/publications/standards/Ecma-376.htm
boolking
2020-08-18 14:01:45 +08:00
python 标准库的 zipfile 不支持流式生成,可以用:
https://github.com/arjan-s/python-zipstream
https://github.com/kbbdy/zipstream
rockivy
2020-08-18 14:15:25 +08:00
@boolking 学习了,多谢!
fareer
2020-08-18 15:12:33 +08:00
有偿提供源码
naldo0193
2020-08-21 10:27:33 +08:00
@boolking 非常感谢
naldo0193
2020-08-21 10:27:48 +08:00
@Vegetable 非常感谢
naldo0193
2020-08-21 10:27:56 +08:00
@fasionchan 非常感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/699098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX