zoukankan      html  css  js  c++  java
  • flask中使用xlsxwriter导出excel文件

    最近需要使用flask导出xlsxwriter生成的excel文件,在文件比较小的情况下,可以直接导出。

      首先,这里使用了StringIO,导出使用的模块

    1 import xlsxwriter
    2 import StringIO

    设置好IO对象,把文件写到io流中,过程见注释

     1 @app.route('/down_excel')
     2 def down_excel():
     3     sio = StringIO.StringIO()
     4     workbook = xlsxwriter.Workbook(sio)  # 直接写到io中
     5     sheet = workbook.add_worksheet(u'sheet1')
     6     style = workbook.add_format()  # 设置风格
     7     sheet.merge_range(0, 0, 0, 5, 'aaa')  # 合并单元格
     8     sheet.write('A2', u'内容', style)
     9     for i in range(2, 10):
    10         sheet.write(i, 2, 1)
    11     sheet.write(11, 2, '=SUM(1:10)')  # 增加公式
    12     sheet.set_column(0, 5, 10)  # 设置列宽
    13     sheet.set_default_row(35)  # 设置默认行高
    14     workbook.close()  # 需要关闭
    15     sio.seek(0)  # 找到流的起始位置
    16     resp = make_response(sio.getvalue())
    17     resp.headers["Content-Disposition"] = "attachment; filename={}.xlsx".format('name')
    18     resp.headers['Content-Type'] = 'application/x-xlsx'
    19     return resp

    如果觉得生成的excel中,格式不好看,可以设置一些默认格式,我在这里写了一个函数,可以直接在添加format时使用,如下

    def xlsx_style(**kwargs):
        style = {
            'bold': kwargs.get('bold', False),  # 加粗
            'font_name': kwargs.get('font_name', 'SimSun'),  # 字体类型,默认宋体
            'font_size': kwargs.get('font_size', 12),  # 字体大小,默认12
            'font_color': kwargs.get('font_color', '#000000'),  # 字体颜色,黑色
            'align': kwargs.get('align', 'center'),  # 默认水平居中
            'valign': kwargs.get('valign', 'vcenter'),  # 默认垂直居中
            'text_wrap': kwargs.get('text_wrap', True),  # 默认自动换行
            'top': kwargs.get('top', 1),  # 上边界,线条宽度
            'bottom': kwargs.get('bottom', 1),  # 边界
            'left': kwargs.get('left', 1),  # 边界
            'right': kwargs.get('right', 1),  # 边界
            'bg_color': kwargs.get('bg_color', '#FFFFFF'),  # 背景颜色,白色
            # 其他类型设置格式可以接着写
        }
    
        return style

    在这里使用

    head_style = workbook.add_format(xlsx_style(bold=True, font_size=20))
    body_style = workbook.add_format(xlsx_style(bg_color='#FFFF00'))
    worksheet.write(2, 5, 'aaa', body_style)
  • 相关阅读:
    linux命令大全
    IP协议
    TCP、IP、ARP协议之间的工作关系
    程序出现问题后
    HTTP(超文本传输协议)
    多线程
    syslog.conf文件
    logger命令
    gdb
    二、数据的存储结构
  • 原文地址:https://www.cnblogs.com/qiaojushuang/p/7597935.html
Copyright © 2011-2022 走看看