flask生成excel下载文件

最近在使用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即可。

你可能感兴趣的:(flask生成excel下载文件)