求 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 ![]() 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 |
![]() | 10 sometimesna1ve 2020-08-18 14:15:25 +08:00 @boolking 学习了,多谢! |
11 fareer 2020-08-18 15:12:33 +08:00 有偿提供源码 |
14 naldo0193 OP @fasionchan 非常感谢 |