最近在使用flask的项目开发中需要从数据库读取数据,生成excel格式文件,然后供用户下载。如果想让用户下载一个文件,在http response里设置 Content-Disposition = attachment 然后设置filename即可。
下载文件分两种情况:
- 读取服务器文件。
- 后台程序直接生成文件内容。
一.读取服务器文件
response = make_response(send_file("myfiles.xls"))
response.headers["Content-Disposition"] = "attachment; filename=myfiles.xls;"
return response
二.后台程序直接生成文件
这里以生成xls文件为例,需要安装第三方库tablib:
pip install tablib
下面是生成xls文件示例:
import tablib
headers = (u"姓名", u"性别", u"年龄")
info = [
(u"李磊", u"男", u"20"),
(u"王艳", u"女", u"18"),
]
data = tablib.Dataset(*info, headers=headers)
#然后就可以通过下面这种方式得到各种格式的数据了。
data.xlsx
data.xls
data.ods
data.json
data.yaml
data.csv
data.tsv
data.html
#增加行
data.append([u'小明', u'男',18])
#增加列
data.append_col([22, 20,13], header=u'年龄')
print data.csv
#删除行
del data[1:3]
#删除列
del data[u'年龄']
print data.csv
#导出excel表
open('xxx.xls', 'wb').write(data.xls)
#多个sheet的excel表
book = tablib.Databook((data1, data2, data3))
book.xls
注意
使用xls格式的话,最大行数为65536,如果要取消这个限制,导出文件为
book.xlsx
即可。
网友评论