当前位置:   article > 正文

python3+xlsxwriter+flask 导出excel_flask 生成excel

flask 生成excel
  1. from app.db import Db
  2. from flask import jsonify,make_response
  3. import datetime,time
  4. import json
  5. import xlsxwriter
  6. from io import BytesIO
  7. import mimetypes
  8. data = Db().query(sql) #数据
  9. output = BytesIO()
  10. # workfile = xlsxwriter.Workbook('test.xlsx') # 创建Excel文件,保存
  11. workfile = xlsxwriter.Workbook(output, {'in_memory': True}) # 创建Excel文件,不保存,直接输出
  12. worksheet = workfile.add_worksheet('会员信息表') # 创建工作表
  13. format1 = workfile.add_format({'font_size': '20', 'align': 'center', 'valign': 'vcenter', 'bold': True}) #设置样式,字体,水平,竖直居中,字体加粗
  14. format2 = workfile.add_format(
  15. {'font_size': '20', 'align': 'center', 'valign': 'vcenter', 'bold': True, 'font_color': '#217346'})
  16. format3 = workfile.add_format(
  17. {'font_size': '10', 'align': 'center', 'valign': 'vcenter', 'bold': True, 'bg_color': '#34A0FF',
  18. 'font_color': 'white'})
  19. format4 = workfile.add_format(
  20. {'font_size': '10', 'align': 'center', 'valign': 'vcenter', 'bold': True,'font_color': '#217346'})
  21. worksheet.merge_range('A1:S1', '会员基本信息', format1) #合并单元格 A1-S1
  22. worksheet.merge_range('T1:W1', '最近一周', format1)
  23. worksheet.merge_range('X1:AA1', '最近一月', format1)
  24. worksheet.merge_range('AB1:AE1', '最近三月', format1)
  25. worksheet.merge_range('AF1:AI1', '最近半年', format2)
  26. worksheet.merge_range('AJ1:AM1', '最近一年', format1)
  27. worksheet.set_column('AF:AI', None, format4) #设置AF-AI列的样式
  28. title = [u'商益会员编号', u'性别', u'生日', u'注册时间', u'最新登录时间', u'用户等级', u'会员设备',
  29. u'会员编号', u'公众号名称', u'手机归属省份', u'手机归属城市', u'手机归属区号', u'手机运营商',
  30. u'首次消费时间', u'最近一次消费时间', u'消费总次数', u'消费总交', u'客单价', u'消费品类',
  31. u'消费次数', u'沉睡会员', u'活着的会员', '超活跃会员',
  32. u'消费次数', u'沉睡会员', u'活着的会员', '超活跃会员',
  33. u'消费次数', u'沉睡会员', u'活着的会员', '超活跃会员',
  34. u'消费次数', u'沉睡会员', u'活着的会员', '超活跃会员',
  35. u'消费次数', u'沉睡会员', u'活着的会员', '超活跃会员'
  36. ]
  37. worksheet.write_row('A2', title, format3)
  38. for i in range(len(data)):
  39. d=[
  40. data[i]['strBncCode'],data[i]['sex'],data[i]['birthday'],data[i]['reg_time'],data[i]['login_time'],
  41. data[i]['vip_level'],data[i]['agent'],data[i]['bu_code'],data[i]['bu_name'],data[i]['province'],
  42. data[i]['city'],data[i]['areaCode'],data[i]['phone_type'],data[i]['first_sale'],data[i]['last_sale'],
  43. data[i]['sale_num'],data[i]['sale_total'],data[i]['once_price'],data[i]['tag_name'],
  44. data[i]['one_week_num'],'','','',
  45. data[i]['one_month_num'],'','','',
  46. data[i]['three_months_num'],'','','',
  47. data[i]['half_year_num']'','','',
  48. data[i]['one_year_num'],'','','',
  49. ]
  50. worksheet.write_row('A'+str(i+3),d)
  51. workfile.close()
  52. # output.seek(0)
  53. # return send_file(output, mimetype="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  54. # as_attachment=True, attachment_filename='file.xlsx')
  55. #实现导出
  56. rv = make_response(output.getvalue())
  57. output.close()
  58. mime_type = mimetypes.guess_type('user_detail.xlsx')[0]
  59. rv.headers['Content-Type'] = mime_type
  60. rv.headers["Cache-Control"] = "no-cache"
  61. rv.headers['Content-Disposition'] = 'attachment; filename=user_detail.xlsx'
  62. return rv

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/464545
推荐阅读
相关标签
  

闽ICP备14008679号