我们通过python用接口的方式导入/导出一份Excel文件。
Tornado
是一个 Python 网络框架和异步网络库,最初由
FriendFeed
开发。通过使用非阻塞网络 I/O,Tornado 可以扩展到数以万计的开放连接,使其成为
长轮询、
WebSockets
和其他需要与每个用户建立长期连接的应用程序的理想选择 。
利用tornado框架简单实现文件下载和导入文件的功能
import json
import time
import tornado.web
import pandas as pd
import tornado.ioloop
from io import BytesIO
def excel_writer(data_info_df):
# 生成一个空ExcelWriter对象
out = BytesIO()
writer = pd.ExcelWriter(out, engine='xlsxwriter')
# 写入数据
data_info_df.to_excel(excel_writer=writer, index=False)
# 保存数据
writer.save()
return out
class Download(tornado.web.RequestHandler):
def get(self):
# 创建测试对象
excel_output = excel_writer(pd.DataFrame(columns=["测试"])).getvalue()
# 文件名称
excel_name = "c.xlsx"
# 设置头信息
self.set_header('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
self.set_header('Content-Disposition', 'attachment; filename=' + excel_name)
# 写入对象
self.write(excel_output)
def post(self, *args, **kwargs):
# 获取参数
file = self.request.files.get("Excel")[0].body
# django 获取文件参数 request.data.get("Excel").file.getvalue()
# 将参数解析为 df 格式
file_df = pd.read_excel(file)
# 返回为json格式
self.write(json.dumps(file_df.to_dict("records"), ensure_ascii=False))
def make_app():
return tornado.web.Application([
(r"/", Download),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
注:这个例子没有使用 Tornado 的任何异步特性
觉得文章写的不错,可以请喝杯咖啡
- Post link: https://yanxiang.wang/%E5%AF%BC%E5%87%BA%E6%96%87%E4%BB%B6/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.