美文网首页git 应用
Python用xlwt写excel

Python用xlwt写excel

作者: 葡萄柚子茶 | 来源:发表于2019-05-08 14:35 被阅读0次

    有时候会需要对数据做excel形式的导出,下面做个总结
    1.新建一个表,向表里添加一个sheet,并且设置单元格样式,设置字体样式(字体,字号),设置行高,设置列宽

    # -*- coding: utf-8 -*-
    import xlwt
    workbook = xlwt.Workbook(encoding='utf-8')
            sheet = workbook.add_sheet(u'sheet', cell_overwrite_ok=True)
    sheet.col(0).width = 256 * 15  # 设置第一列的宽度为15,宽度的基本单位为256.所以设置的时候一般用256 × 需要的列宽。
    # 设置行高为可以修改,并修改为 40,行高的基本单位为20,设置同行高。
    sheet.row(0).height_mismatch = True
    sheet.row(0).height = 20 * 40 
    

    2.设置单元格风格。Font()用来设置单元格字体内容,如字体类型、大小等;borders()设置单元格边框线粗细;partern()设置单元格背景颜色;XFStyle()设置风格类型;alignment()用来设置了字体水平居中、垂直居中、自动换行。

    style = xlwt.XFStyle()   
    font = xlwt.Font()
    font.name = "SimSun"  # 宋体
    font.height = 20 * 11  # 字体大小为11,字体大小的基本单位是20.
    font.bold = False # 设置字体为不加粗
    font.colour_index = 0x01 # 字体颜色默认为黑色,此处设置字体颜色为白色, 颜色范围为:0x00-0xff
    style.font = font
    pat = xlwt.Pattern()
    pat.pattern = xlwt.Pattern.SOLID_PATTERN  # 设置单元格背景颜色
    pat.pattern_fore_colour = xlwt.Style.colour_map['dark_blue'] # 设置单元格背景颜色为深蓝
    style.pattern = pat
    borders = xlwt.Borders()
    borders.left = 1
    borders.right = 1
    borders.top = 1
    borders.bottom = 1
    style.borders = borders
    

    颜色映射如下

    _colour_map_text = """
    aqua 0x31
    black 0x08
    blue 0x0C
    blue_gray 0x36
    bright_green 0x0B
    brown 0x3C
    coral 0x1D
    cyan_ega 0x0F
    dark_blue 0x12
    dark_blue_ega 0x12
    dark_green 0x3A
    dark_green_ega 0x11
    dark_purple 0x1C
    dark_red 0x10
    dark_red_ega 0x10
    dark_teal 0x38
    dark_yellow 0x13
    gold 0x33
    gray_ega 0x17
    gray25 0x16
    gray40 0x37
    gray50 0x17
    gray80 0x3F
    green 0x11
    ice_blue 0x1F
    indigo 0x3E
    ivory 0x1A
    lavender 0x2E
    light_blue 0x30
    light_green 0x2A
    light_orange 0x34
    light_turquoise 0x29
    light_yellow 0x2B
    lime 0x32
    magenta_ega 0x0E
    ocean_blue 0x1E
    olive_ega 0x13
    olive_green 0x3B
    orange 0x35
    pale_blue 0x2C
    periwinkle 0x18
    pink 0x0E
    plum 0x3D
    purple_ega 0x14
    red 0x0A
    rose 0x2D
    sea_green 0x39
    silver_ega 0x16
    sky_blue 0x28
    tan 0x2F
    teal 0x15
    teal_ega 0x15
    turquoise 0x0F
    violet 0x14
    white 0x09
    yellow 0x0D"""

    继续设置单元格中内容中位置,居中,局左右等
    使用xlwt中的Alignment来设置单元格的对齐方式,其中horz代表水平对齐方式,vert代表垂直对齐方式。
    VERT_TOP = 0x00 上端对齐
    VERT_CENTER = 0x01 居中对齐(垂直方向上)
    VERT_BOTTOM = 0x02 低端对齐
    HORZ_LEFT = 0x01 左端对齐
    HORZ_CENTER = 0x02 居中对齐(水平方向上)
    HORZ_RIGHT = 0x03 右端对齐

    style.alignment.horz = 0x02
    # 水平居中
    style.alignment.vert = 0x01
    # 垂直居中
    

    对于会计数据,需要设置单元格的内容格式,比如人民币,美元之类的。

    style.num_format_str = '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)' # 设置单元格内容格式为 人民币,保留到小数点后两位
    

    其他格式参考如下

    fmts = [
        'general',
        '0',
        '0.00',
        '#,##0',
        '#,##0.00',
        '"$"#,##0_);("$"#,##',
        '"$"#,##0_);[Red]("$"#,##',
        '"$"#,##0.00_);("$"#,##',
        '"$"#,##0.00_);[Red]("$"#,##',
        '0%',
        '0.00%',
        '0.00E+00',
        '# ?/?',
        '# ??/??',
        'M/D/YY',
        'D-MMM-YY',
        'D-MMM',
        'MMM-YY',
        'h:mm AM/PM',
        'h:mm:ss AM/PM',
        'h:mm',
        'h:mm:ss',
        'M/D/YY h:mm',
        '_(#,##0_);(#,##0)',
        '_(#,##0_);[Red](#,##0)',
        '_(#,##0.00_);(#,##0.00)',
        '_(#,##0.00_);[Red](#,##0.00)',
        '_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',
        '_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',
        '_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',
        '_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',
        'mm:ss',
        '[h]:mm:ss',
        'mm:ss.0',
        '##0.0E+0',
        '@'
    ]
    

    3.写入数据,并保存

    sheet.write(0, 1, 'content', style)
    # 合并第0行的第0列到第3列。
    worksheet.write_merge(0, 0, 0, 3, 'First Merge')
    workbook.save('test.xls')
    

    相关文章

      网友评论

        本文标题:Python用xlwt写excel

        本文链接:https://www.haomeiwen.com/subject/tbbmoqtx.html