xlwt介绍和安装
pip install xlwt
在保存之前,可以设置单元格的属性,官网提供了以下6种设置。
GroupAttributes
Number format
Number format index (index to FORMAT record)
Font
Font index (index to FONT record)
Alignment
Horizontal and vertical alignment, text wrap, indentation, orientation/rotation, text direction
Border
Border line styles and colours
Background
Background area style and colours
Protection
Cell locked, formula hidden
此文介绍其中4种:
Font:字体设置
Alignment:对准设置
Border:边框设置
Background:背景设置
创建表格
创建一个表格的流程
定义workbook
添加sheet
创建一个样式对象style,设置格式(这一步可以省略,出来就是默认格式)
给表格赋值
保存表格
我们首先创建一个最简单的表格,不做任何格式,内容就是从0-71的数字。
import xlwt
# 定义workbook
workbook = xlwt.Workbook()
# 添加sheet,这个sheet的名字叫'Style'
sheet = workbook.add_sheet('Style')
# 写入数据
row = 0 # 行
column = 0 # 列
for i in range(72):
sheet.write(row, column, i) # 写入数据,第row行,第column列,具体内容是i
column += 1
if column > 8:
column = 0
row += 1
# 定义保存Excel的位置和文件名。默认是和代码存在一个路劲下面。
workbook.save('CreatExcelTable.xls')
此时运行代码,生成的文件如下所示
能生成一个表格之后,我们开始来设置格式,包括设置字体、居中、边框和背景。
设置格式
1、设置单元格背景
先说设置单元格背景,因为背景设置主要是颜色的设置。这个颜色的识别,是通用的。
我们在设置字体、单元格填充时,会进行颜色的设置。比如将字体设置成红色,将单元格设置成黄色。在xlwt设置中,每一个颜色,都由相对应的数字表示。具体参照下图,给大家分别展示了,当字体是白色或者黑色时,单元格颜色的显示效果。
颜色对应的序号,字体为白色
1 #coding:utf-8
2 importpatterns as patterns3 importxlwt4 importtime5 i =06 book = xlwt.Workbook(encoding='utf-8')7 sheet = book.add_sheet('sheet1', cell_overwrite_ok=True)8 #如果出现报错:Exception: Attempt to overwrite cell: sheetname='sheet1' rowx=0 colx=0
9 #需要加上:cell_overwrite_ok=True)
10 #这是因为重复操作一个单元格导致的
11
12 while i < 64:13 #为样式创建字体
14 font =xlwt.Font()15
16 #字体类型
17 font.name = 'name Times New Roman'
18 #字体颜色
19 font.colour_index =i20 #字体大小,11为字号,20为衡量单位
21 font.height = 20*11
22 #字体加粗
23 font.bold =False24 #下划线
25 font.underline =True26 #斜体字
27 font.italic =True28
29 #设置单元格对齐方式
30 alignment =xlwt.Alignment()31 #0x01(左端对齐)、0x02(水平方向上居中对齐)、0x03(右端对齐)
32 alignment.horz = 0x02
33 #0x00(上端对齐)、 0x01(垂直方向上居中对齐)、0x02(底端对齐)
34 alignment.vert = 0x01
35
36 #设置自动换行
37 alignment.wrap = 1
38
39 #设置边框
40 borders =xlwt.Borders()41 #细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
42 #大粗虚线:8,细点划线:9,粗点划线:10,细双点划线:11,粗双点划线:12,斜点划线:13
43 borders.left = 1
44 borders.right = 2
45 borders.top = 3
46 borders.bottom = 4
47 borders.left_colour =i48 borders.right_colour =i49 borders.top_colour =i50 borders.bottom_colour =i51
52 #设置列宽,一个中文等于两个英文等于两个字符,11为字符数,256为衡量单位
53 sheet.col(1).width = 11 * 256
54
55 #设置背景颜色
56 pattern =xlwt.Pattern()57 #设置背景颜色的模式
58 pattern.pattern =xlwt.Pattern.SOLID_PATTERN59 #背景颜色
60 pattern.pattern_fore_colour =i61
62 #初始化样式
63 style0 =xlwt.XFStyle()64 style0.font =font65
66 style1 =xlwt.XFStyle()67 style1.pattern =pattern68
69 style2 =xlwt.XFStyle()70 style2.alignment =alignment71
72 style3 =xlwt.XFStyle()73 style3.borders =borders74
75 #设置文字模式
76 font.num_format_str = '#,##0.00'
77
78 sheet.write(i, 0, u'字体', style0)79 sheet.write(i, 1, u'背景', style1)80 sheet.write(i, 2, u'对齐方式', style2)81 sheet.write(i, 3, u'边框', style3)82
83 #合并单元格,合并第2行到第4行的第4列到第5列
84 sheet.write_merge(2, 4, 4, 5, u'合并')85 i = i + 1
86
87 book.save('E:/test/testfile/test_file'+time.strftime("%Y%m%d%H%M%S")+'.xls')
颜色对应的序号,字体为黑色
设置表格格式,我们首先要先定义一个样式
# 创建一个样式对象,初始化样式 style
style = xlwt.XFStyle()
接着进行背景设置
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 4 # 给背景颜色赋值
根据上图可知,0代表黑色,1代表白色,2代表红色,以此类推。后续所有涉及颜色的操作,都以此数字代表。
颜色参照上面的规则,比如,4,对应的是,深蓝色
设置好之后,把这个背景,应用到刚刚的 style 上面去
style.pattern = pattern # 把背景颜色加到表格样式里去
最后,在赋值的时候,把格式带上
sheet.write(row, column, i) # 不带格式
sheet.write(row, column, i, style) # 有格式
2、设置字体格式
与上述一致,我们先要先定义一个样式
# 创建一个样式对象,初始化样式 style
style = xlwt.XFStyle()
接着进行字体设置
# 为样式创建字体
font = xlwt.Font()
font.name = 'Calibri' # 设置字体
font.colour_index = 4 # 设置字体颜色
font.height = 400 # 字体大小
字体大家可以任选,和Excel里面字体的名字匹配就可以
颜色参照上面的规则,比如,4,对应的是,深蓝色
字体大小也看大家心情啦
设置好之后,把这个字体,应用到刚刚的 style 上面去
style.font = font
最后,在赋值的时候,把格式带上
sheet.write(row, column, i) # 不带格式
sheet.write(row, column, i, style) # 有格式
完整代码
import xlwt
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('Font')
# 创建一个样式对象,初始化样式 style
style = xlwt.XFStyle()
# 为样式创建字体
font = xlwt.Font()
font.name = 'Calibri' # 设置字体
font.colour_index = 4 # 设置字体颜色
font.height = 400 # 字体大小
# 定义格式-字体
style.font = font
# 写入数据
row = 0 # 行
column = 0 # 列
for i in range(72):
sheet.write(row, column, i, style) # 增加样式
if column > 8:
column = 0
row += 1
workbook.save('Font.xls')
此时效果如下图所示,字体是Calibri,颜色是蓝色,字体大小是400
我们对字体进行进一步设置,设置粗体、斜体、下划线等
font.name = 'Times New Roman' # 设置字体
font.color_index = color # 设置字体颜色
font.height = 400 # 字体大小
font.bold = True # 字体是否为粗体
font.italic = True # 字体是否为斜体
font.underline = True # 字体是否有下划线
font.struck_out =True # 字体中是否有横线
我们来看一下粗体、斜体和下划线的效果。下划线的颜色和粗细,是随着字体走的。字体粗体,下划线也是粗体。
下面是横线效果
3、位置设置
目前我只会设置水平位置
有些文章说,通过al.vert可以设置垂直位置,我尝试了没效果
后续如果学会了,再来更新
alignment = xlwt.Alignment()
alignment .horz = 1 # 设置水平位置,0是左对齐,1是居中,2是右对齐
# 设置自动换行
alignment.wrap = 1
style.alignment = alignment
4、边框设置
# 设置边框
borders = xlwt.Borders() # Create Borders
# DASHED虚线
# NO_LINE没有
# THIN实线
borders.left = xlwt.Borders.DASHED
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
borders.left_colour = color
borders.right_colour = color
borders.top_colour = color
borders.bottom_colour = color
style.borders = borders
边框颜色随意,这个不多说了。讲一下边框的线条。
有两种定义方式,一种是用DASHED、THIN来表示
# DASHED虚线
# NO_LINE没有
# THIN实线
borders.left = xlwt.Borders.DASHED
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
效果如下
实线边框
虚线边框
还有一种,可以直接用数字表示
# 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7
# 大粗虚线:8,细点划线:9,粗点划线:10,细双点划线:11,粗双点划线:12,斜点划线:13
borders.left = 1
borders.right = 2
borders.top = 3
borders.bottom = 4
这边展示了,不同数字对应的边框样式
根据数字定义边框