python设置excel的格式_【Python学习】利用xlwt设置Excel单元格格式

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')

此时运行代码,生成的文件如下所示

webp

能生成一个表格之后,我们开始来设置格式,包括设置字体、居中、边框和背景。

设置格式

1、设置单元格背景

先说设置单元格背景,因为背景设置主要是颜色的设置。这个颜色的识别,是通用的。

我们在设置字体、单元格填充时,会进行颜色的设置。比如将字体设置成红色,将单元格设置成黄色。在xlwt设置中,每一个颜色,都由相对应的数字表示。具体参照下图,给大家分别展示了,当字体是白色或者黑色时,单元格颜色的显示效果。

webp

颜色对应的序号,字体为白色

webp

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

webp

我们对字体进行进一步设置,设置粗体、斜体、下划线等

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 # 字体中是否有横线

我们来看一下粗体、斜体和下划线的效果。下划线的颜色和粗细,是随着字体走的。字体粗体,下划线也是粗体。

webp

下面是横线效果

webp

3、位置设置

目前我只会设置水平位置

有些文章说,通过al.vert可以设置垂直位置,我尝试了没效果

后续如果学会了,再来更新

alignment = xlwt.Alignment()

alignment .horz = 1 # 设置水平位置,0是左对齐,1是居中,2是右对齐

# 设置自动换行

alignment.wrap = 1

style.alignment = alignment

webp

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

效果如下

webp

实线边框

webp

虚线边框

还有一种,可以直接用数字表示

# 细实线: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

这边展示了,不同数字对应的边框样式

webp

根据数字定义边框

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值