问题:导出文件时,如何将字节流返回给前端,前端通过blob方式获取
方法:
Tornado
import xlwt
from io import BytesIO
class ApiDownloadHandler(BaseHandler):
@login_required()
def post(self):
# 设置响应头
self.set_header('Content-Type', 'application/x-xls')
# filename 不能为中文
self.set_header('Content-Disposition', 'attachment; filename=download.xls')
wb = xlwt.Workbook()
ws = wb.add_sheet('Sheet1')
style0 = xlwt.easyxf('font: name Microsoft YaHei Light, height 220; align: vert centre, horiz center')
# title
header = ['序号', '姓名', '年龄']
for i in range(len(header)):
ws.write(0, i, header[i], style0)
ws.col(i).width = 4000
sio = BytesIO()
# 这点很重要,传给save函数的不是保存文件名,而是一个StringIO流
wb.save(sio)
self.write(sio.getvalue())
阅读全文