python xlwt写Excel表

1 xlwt第三方库

说明:xlwt是一个用于将数据和格式化信息写入并生成Excel文件的库。

注意:xlwt不支持写xlsx表,打开表文件报错。

官方文档://xlwt.readthedocs.io/en/latest/api.html

2 xlwt基础操作

2.1 获取工作䈬对象

import xlwt
book = xlwt.Workbook(encoding="ascii", style_compression=0)

参数:

  • encoding:设置编码格式,默认ascii。
  • sytle_compression:限制工作䈬中xlwt.XFStyle()对象个数,默认参数值为0。当报“More than 4094 XFs (styles)”异常时,设置参数值为2可解除限制。(xlwt.XFStyle()为下面第3点的样式对象)

2.2 添加并获取工作表对象

sh = book.add_sheet(sheetname="sheet_1", cell_overwrite_ok=False)

参数:

  • sheetname:设置sheet工作表名称。
  • cell_overwrite_ok:设置在此工作表中是否允许重写单元格,默认False为不允许,True为允许。

2.3 设置单元格样式

sh.row(0).height = 20*30  # 直接设置第一行行高为30磅,20为基数
# 通过wlwt.XFStyle()对象设置复杂样式
style = xlwt.XFStyle()  # 获取样式对象
font = xlwt.Font()      # 获取字体对象
font.name = '微软雅黑'   # 设置字体类型
style.font = font       # 将设置后的字体对象赋值给样式对象的font属性

不设置则使用默认样式:字体Arial,字号10,底端对齐等。

2.4 写入单元格数据

sh.write(r=0, c=0, label="hello", style=style)  # sytle为第3步设置的样式对象

参数:

  • r:行号。
  • c:列号。
  • label:写入r行c列单元格的值,默认为空字符。
  • style:设置r行c列单元格的样式,不设置则使用默认样式。

2.5 保存Excel文件

book.save("test.xls")

3 常用格式设置

3.1 设置指定行高度

sh.row(0).height_mismatch = True  # 设置行高可编辑
sh.row(0).height = 20*10  # 设置第一行行高:20为基数*10磅

3.2 设置指定列宽度

sh.col(0).width = 256*20  # # 设置第一列列宽:256为基数*20个字符

3.3 设置冻结行/列

# 先设置sheet表的冻结属性为True
sh.set_panes_frozen("1")  # 1为True,0为False
sh.set_horz_split_pos(1)  # 冻结首行
sh.set_vert_split_pos(2)  # 冻结前两列

3.4 设置合并单元格

sh.write_merge(r1=1, r2=2, c1=3, c2=4, label="hello")  # 合并D2、D3、E2、E3单元格

合并效果:

3.5 设置单元格公式

sh.write(0, 0, label=2)
sh.write(1, 0, label=3)
sh.write(2, 0, label=xlwt.Formula('SUM(A1:A2)'))  # 设置A3的值为A1和A2之和
sh.write(2, 1, label=xlwt.Formula('A1*A2'))  # 设置B3的值为A1和A2乘积
sh.write(2, 2, xlwt.Formula('HYPERLINK("//www.baidu.com";"Baidu")'))  # 设置C3单元格超链接

公式结果:

3.6 设置单元格字体

style = xlwt.XFStyle()  # 获取样式对象
font = xlwt.Font()      # 获取字体对象
font.name = '微软雅黑'   # 设置字体类型
font.height = 20*15     # 设置字体大小:20为基数*15号字体
font.bold = True        # 加粗
font.underline = True   # 下划线
font.italic = True      # 斜体
font.colour_index = 2   # 设置字体颜色,下面有字体颜色序号对照图
style.font = font       # 将设置后的字体对象赋值给样式对象的font属性

字体颜色序号对照图:

3.7 设置单元格背景填充颜色

style = xlwt.XFStyle()  # 获取样式对象
pattern = xlwt.Pattern()  # 获取背景对象
pattern.pattern = xlwt.Pattern.SOLID_PATTERN  # 使工作表单元格背景颜色可设置
pattern.pattern_fore_colour = 4  # 数字背景颜色,下面有背景颜色序号对照图
style.pattern = pattern  # 将设置后的背景对象赋值给样式对象的pattern属性

背景颜色序号对照图:

3.8 设置单元格对齐方式

style = xlwt.XFStyle()  # 获取样式对象
alignment = xlwt.Alignment()  # 获取对齐方式对象
# 水平调整:alignment.horz
alignment.horz = xlwt.Alignment.HORZ_CENTER # 水平居中
"""
alignment.horz = xlwt.Alignment.HORZ_LEFT # 左对齐
alignment.horz = xlwt.Alignment.HORZ_RIGHT # 右对齐
"""
# 垂直调整:alignment.vert
alignment.vert = xlwt.Alignment.VERT_CENTER # 垂直居中
"""
alignment.vert = xlwt.Alignment.VERT_TOP # 顶端对齐
alignment.vert = xlwt.Alignment.VERT_BOTTOM # 底端对齐
"""
# 自动换行
alignment.wrap = 1

style.alignment = alignment  # 将设置后的对齐方式对象赋值给样式对象的alignment属性

3.9 设置单元格边框

style = xlwt.XFStyle()  # 获取样式对象
borders = xlwt.Borders()  # 获取边框对象
borders.left = xlwt.Borders.THIN  # 设置左边细边框
borders.right = xlwt.Borders.THICK  # 设置右边粗边框
borders.top = xlwt.Borders.DOTTED  # 设置顶部虚线框
borders.bottom = xlwt.Borders.DOUBLE  # 设置底部双线框
style.borders = borders  # 将设置后的边框对象赋值给样式对象的borders属性

边框效果:

Tags: