Python用xlwt写excel
有时候会需要对数据做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')