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即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个爱瞎折腾的程序猿

vue项目实践-添加axios封装api请求

axios 默认提交格式为:application/json 可使用 qs 模块(需要安装)转换后提交格式为 application/x-www-form-u...

57520
来自专栏桥路_大数据

react native打包apk

38530
来自专栏企鹅号快讯

python入门——解释器、编辑器、包的安装

解释器 python并不需要先编译再执行,而是直接由解释器解释执行。python解释器的版本目前主要以python2.7和python3.6(或python3....

26550
来自专栏繁花云

利用git做云存储(非dalao勿入)

6700
来自专栏图像识别与深度学习

2018-03-24python3.6.2 Tensorflow环境配置(win10 64位)

18470
来自专栏Golang语言社区

【Go 语言社区】Golang 语言获取本机逻辑CPU数量的方法

本文实例讲述了Go语言获取本机逻辑CPU数量的方法。分享给大家供大家参考。具体分析如下: 一般来说,通过runtime库的NumCPU可以获得本机逻辑CPU的数...

41560
来自专栏逸鹏说道

前端:图文混排-怎么在不使用float的情况下实现想要的效果呢?

异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 举个例子 ? 重点:display:fle...

335110
来自专栏闵开慧

打开迷你云时显示apache2.2端口被占用

今天本地测试phpcms,下载套件后发现Apache2.2无法启动,搜网后发现,估计是80端口被占用,由于之前测试过asp,所以顺便把iis服务也关了,随后用...

357110
来自专栏Django中文社区

注册

用户注册就是创建用户对象,将用户的个人信息保存到数据库里。回顾一下 Django 的 MVT 经典开发流程,对用户注册功能来说,首先创建用户模型(M),这一步我...

51150
来自专栏耕耘实录

关于Linux中权限列中的加号及点的深度探索

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

9610

扫码关注云+社区

领取腾讯云代金券