# flask_返回字节流错误

def export_data(filename, fields, data, names=None, sheet='Sheet1'):
# fields 为list data为dict fp = io.BytesIO()
book = xlsxwriter.Workbook(fp, {'in_memory': True})
worksheet = book.add_worksheet(sheet)
# 表头格式
format1 = book.add_format(
{'bold': True, 'font_color': 'black', 'font_size': 13, 'align': 'left', 'font_name': u'宋体'})
# 表头外格式
format2 = book.add_format({'font_color': 'black', 'font_size': 9, 'align': 'left', 'font_name': u'宋体'})
# A列列宽设置能更好的显示
worksheet.set_column("A:F", 20)
# book = xlwt.Workbook()
# worksheet = book.add_sheet('Sheet1') # 创建一个sheet
# 插入第一行表头标题
if names:
for i in range(0, len(names)):
name = names[i]
worksheet.write(0, i, name, format1)
else:
for i in range(0, len(fields)):
field = fields[i]
worksheet.write(0, i, field, format2)
# 从第二行开始插入数据
for i in range(len(data)):
item = data[i]
for j in range(len(fields)):
field = fields[j]
worksheet.write(i + 1, j, item[field])
book.close()
# fp.seek(0) # print(filename,'////////////////////')
name = parse.quote(filename)
# print(fp.getvalue(),'-------------------')
# rv = send_file(send_file(fp, attachment_filename='%s.xlsx' % name, as_attachment=True))
rv = make_response(fp.getvalue())
# 特别注意,必须加这一行
fp.close()
mime_type = mimetypes.guess_type('%s.xlsx' % name)[0]
rv.headers['Content-Type'] = mime_type
rv.headers["Cache-Control"] = "no-cache"
rv.headers['Content-Disposition'] = 'attachment; filename={}.xlsx'.format(name) return rv # 报错信息:
"""
io.UnsupportedOperation: fileno
.... /python3.6/site-packages/werkzeug/wsgi.py", line 893, in wrap_file
return environ.get('wsgi.file_wrapper', FileWrapper)(file, buffer_size)
SystemError: <built-in function uwsgi_sendfile> returned a result with an error set 原因:BytesIo未关闭,加上fp.close就行了
"""

flask_返回字节流错误的更多相关文章

  1. 对COM 组件的调用返回了错误 HRESULT E_FAIL

    .net ppt转pdf时报以下错误: 对COM 组件的调用返回了错误 HRESULT E_FAIL 在服务器端打开PPT,选项--另存为--PDF,发现PowerPoint报了个错误: “无法找到打 ...

  2. 子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2

    今天在ubuntu kylin上安装了virtualbox, 后来我想删除了再装个新一点的,结果正常的情况下删除不了,我就把找到的virtualbox的目录全部都删除了, 再通过apt-get rem ...

  3. iOS AFNetworking 打印从服务器返回的错误提示信息

    每次做项目的时候都会在网络请求时候测试接口的时候会出现一些不同的错误,而控制台打印的错误提示信息都是data类型,看不出提示的错误的信息是什么.后面经过一些查阅发现其实是可以把这个转变为string的 ...

  4. 给Apache加载rewrite模块后,服务器返回500错误,以及a2enmod命令

    我的机子是Ubuntu. 今天想给url做一个rewrite,让url看起来更漂亮一点.在Apache配置文件(我的是 /etc/apache/apache2.conf)文件中已经把AllOverri ...

  5. 源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题(修改PATH路径)

    最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持op ...

  6. 源代码编译安装 PHP5.5.0,解决curl_exec訪问HTTPS返回502错误的问题

    近期碰到一个奇怪的问题. PHP使用 curl_exec 訪问 HTTPS 网页时, 返回502错误, 訪问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看. 支持op ...

  7. 使用spring webflow,在前台页面中如何显示后端返回的错误信息

    刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到 ...

  8. Centos 执行shell命令返回127错误

    shell脚本功能:连接mysql,自动创建数据库,脚本如下 mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASSWORD --default-character ...

  9. curl post请求总是返回417错误

    在进行post请求的时候, curl总是返回417错误 在使用curl做POST的时候, 当要POST的数据大于1024字节的时候, curl并不会直接就发起POST请求, 而是会分为俩步. 发送一个 ...

随机推荐

  1. linux svn apache

    借助apache运行的svn服务器 一:安装Apache HTTP Server 1.安装Apache HTTP Server yum install httpd httpd-devel -y 2.修 ...

  2. mysql 重置 root 密码

    mysqld_safe --skip-grant-tables & UPDATE mysql.user SET authentication_string=PASSWORD('mima') W ...

  3. RT-thread v2.1.0修正版

    RT-Thread v2.1.0是v2.0.1正式版这个系列的bug修正版.RT-Thread v2.1.0修正的主要内容包括: 这个版本经历的时间比较长,并且原定的一些目标也还未能完成(更全的POS ...

  4. 如何正确实现Page接口分页,用PageImpl 自定义分页

    /** * Constructor of {@code PageImpl}. * * @param content the content of this page, must not be {@li ...

  5. [JSOI2010]部落划分 最小生成树

    一道最小生成树经典题 由于是最靠近的两个部落尽可能远,如果我们先处理出任意两个居住点之间的距离并将其当做边,那么我们可以发现,因为在一个部落里面的边是不用计入答案的,所以应该要尽量把小边放在一个部落里 ...

  6. 【SPOJ】Highways(矩阵树定理)

    [SPOJ]Highways(矩阵树定理) 题面 Vjudge 洛谷 题解 矩阵树定理模板题 无向图的矩阵树定理: 对于一条边\((u,v)\),给邻接矩阵上\(G[u][v],G[v][u]\)加一 ...

  7. HDOJ(HDU).1114 Piggy-Bank (DP 完全背包)

    HDOJ(HDU).1114 Piggy-Bank (DP 完全背包) 题意分析 裸的完全背包 代码总览 #include <iostream> #include <cstdio&g ...

  8. 学习操作Mac OS 之 常用命令

    ~ 符号在 Mac 甚至所有基于 Unix 和 Linux 的系统中都是代表当前用户的用户目录,.代表当前目录 配置环境变量语句:  source ~/.bash_profile 查看host文件语句 ...

  9. React的setState执行机制

    1. setState基本特点 1. setState是同步执行的 setState是同步执行的,但是state并不一定会同步更新 2. setState在React生命周期和合成事件中批量覆盖执行 ...

  10. POI 2018.10.20

    [POI2005]BANK-Cash Dispenser 有多少个4位字符串是所有操作序列的子串. 10^4枚举字符串.暴力判断会TLE 发现,我们就是在每个操作序列中不断找第一个出现的c字符. 预处 ...