求 aiohttp 后端 直接生成 xlsx 和响应下载的 demo,实在找不到教程。。
另外请问各位对于自己不熟悉库,有什么技巧能较系统了解这个库。
1
supermoonie 2020-08-18 00:56:16 +08:00 via iPhone
aio 不是 windows 玩的转吗,linux 服务器大多是 nio 吧,不熟悉的话就找找书系统看下
|
2
qile1 2020-08-18 01:09:21 +08:00 via Android
datatable 有个导出 excel 和复制及打印的按钮,你参考下看是否类似
|
3
fy 2020-08-18 01:42:31 +08:00 via Android
?这跟框架没关系,抄起 openxlsx 一把梭然后 response 写 bytes 就行了
|
4
Vegetable 2020-08-18 01:55:33 +08:00
搞不懂你们为什么用 aiohttp 直接做 server...
你的重点应该是怎么生成一个 excel 保存在内存中。这个要看你什么库,以 openpyxl 为例 正常时 wb.save(filename) 你用 body = BytesIO() wb.save(body) 将 xls 变成一个字节码,在把这个字节码返回,设置好文件名和 mimetype 就行了。 |
5
so1n 2020-08-18 09:02:44 +08:00 via Android
@supermoonie 在 linux 用 epoll 在 win 好像是 select
|
6
fasionchan 2020-08-18 11:05:57 +08:00
openpyxl,这有篇入门文章: https://python.fasionchan.com/zh_CN/latest/libs/openpyxl.html
|
7
supermoonie 2020-08-18 11:36:12 +08:00 via iPhone
@so1n win 的 aio 支持走在了前面
|
8
boolking 2020-08-18 13:32:44 +08:00 1
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 |
9
boolking 2020-08-18 14:01:45 +08:00
python 标准库的 zipfile 不支持流式生成,可以用:
https://github.com/arjan-s/python-zipstream https://github.com/kbbdy/zipstream |
11
fareer 2020-08-18 15:12:33 +08:00
有偿提供源码
|
14
naldo0193 OP @fasionchan 非常感谢
|