Python 使用xlwings库操作excel的简明实践分享之单元格样式管理

316 阅读3分钟

见微知著,以小见大,本篇从调整单个单元格的样式出发,向大家介绍xlwings是如何去实现excel的样式管理的。

单个单元格就是一个cell,是excel一个最小的操作单元,同样的操作能在不同的单元格进行扩展,可以参考前序文章中使用range划定范围和使用expand拓展行和列。

单元格填充色

单元格的填充色是经常使用的excel功能,在我们的工作中,可以通过代码,对已有的数据表格中,特定的单元格设置不一样的颜色。

一般有两种方法,设置RGB元组和设置颜色字符串

ws['A1'].color = (255, 255, 200)
ws['A2'].color = '#ffff00'

image.png

颜色可以通过网页或者pycharm里面的取色器自行调整获取。

 

列宽与行高

据官方帮助文档,Excel 中默认的行高是15磅,最大409磅,列宽默认为8.43磅,最大255磅。超出范围的内容会被阻挡,但内容是不会消失的。

单个行和列只能有一个设置。

 

ws['A1'].row_height = 33

ws['A2'].column_width = 20   image.png

 

任意单元格都能控制自身所在行和列的高度和宽度,后面的操作会覆盖前面的。

还有个自适应的方法,将根据单元格内部的内容来自行适应。

ws['D1'].autofit()

 

 

边框设置

边框设置要用到excel自身的api来调动修改。

使用单元格范围.api.Borders(数字)来选择范围

以B2:A5 单元格进行演示

数字可以尝试1-12,下面都是我亲手查看的。

1是范围里的全部左边竖线   image.png

对应的2是右边竖线

 

image.png  

3是上方竖线,4则是对应的下方竖线。   image.png


 

5是单元格内从左上角到右下角的斜线,6则是左下角到右上角的斜线

 

image.png


7是整个单元范围的左边界线

image.png

8是整个范围的上边界

image.png

9是整个范围的下边界,10是右边界

 

 

11是除开两个边界外的竖线

 

image.png  

12是除开两个边界外的横线

image.png  

 

没有13了,会报错。5-12是独立的一批线条。

 

边界线型

 

Cell.api.Borders(数字).LineStyle = 1/2/3/4...

 

1是直线,2、3是虚线,4是点划线,5是双点划线,6是一种较粗的点划线,还具有一种纹理,12是双下划线。线型有13种,可以自行尝试,找到自己喜欢的进行复用。

image.png  

边界粗细

 

Cell.api.Borders(数字).Weight= 数值

设置边界的磅数,数值需要<5

边界颜色

Cell.api.Borders(数字).ColorIndex = 颜色索引

 

颜色和前文的单元格颜色并不遵循同一套规则,需要额外叙述

颜色索引查表如下

image.png

 

对齐方式

 

水平:Cell.api.HorizontalAlignmnet

垂直:Cell.api.VerticalAlignmnet

没什么好说的,查表,水平值-4108居中,-4131靠左,-4152靠右,
垂直值-4108居中,-4160靠上,-4107靠下。

我也是从网上找的,  想不起来的时候来我这里看看。

 

文字样式

设置字体,字号,粗细,颜色示例

 

ws['B2:G2'].api.Font.Name = '仿宋'
ws['B2:G3'].api.Font.Size = 20
ws['B2:G3'].api.Font.Bold = True
ws['B2:G3'].api.Font.ColorIndex = 35

 

image.png

边界和字体的颜色后来经过查表,能够设置一个数值,数值建议是通过0x开头的6为16进制数,比如:

ws['B2:G5'].api.Borders(10).Color = 0x0000ff

或者使用工具中的转换函数转换为数值

ws['B2:G5'].api.Borders(10).Color =xlwings.utils.rgb_to_int((0,0,255))

单元格格式设置

使用api.NumberFormat 可以设置单元格的格式,常见的格式如下: @ 文本格式 0.0 小数格式,位数的限定 yyyy-mm-dd 日期的格式化,自选格式 0% 百分比格式