见微知著,以小见大,本篇从调整单个单元格的样式出发,向大家介绍xlwings是如何去实现excel的样式管理的。
单个单元格就是一个cell,是excel一个最小的操作单元,同样的操作能在不同的单元格进行扩展,可以参考前序文章中使用range划定范围和使用expand拓展行和列。
单元格填充色
单元格的填充色是经常使用的excel功能,在我们的工作中,可以通过代码,对已有的数据表格中,特定的单元格设置不一样的颜色。
一般有两种方法,设置RGB元组和设置颜色字符串
ws['A1'].color = (255, 255, 200)
ws['A2'].color = '#ffff00'
颜色可以通过网页或者pycharm里面的取色器自行调整获取。
列宽与行高
据官方帮助文档,Excel 中默认的行高是15磅,最大409磅,列宽默认为8.43磅,最大255磅。超出范围的内容会被阻挡,但内容是不会消失的。
单个行和列只能有一个设置。
ws['A1'].row_height = 33
ws['A2'].column_width = 20
任意单元格都能控制自身所在行和列的高度和宽度,后面的操作会覆盖前面的。
还有个自适应的方法,将根据单元格内部的内容来自行适应。
ws['D1'].autofit()
边框设置
边框设置要用到excel自身的api来调动修改。
使用单元格范围.api.Borders(数字)来选择范围
以B2:A5 单元格进行演示
数字可以尝试1-12,下面都是我亲手查看的。
1是范围里的全部左边竖线
对应的2是右边竖线
3是上方竖线,4则是对应的下方竖线。
5是单元格内从左上角到右下角的斜线,6则是左下角到右上角的斜线
7是整个单元范围的左边界线
8是整个范围的上边界
9是整个范围的下边界,10是右边界
11是除开两个边界外的竖线
12是除开两个边界外的横线
没有13了,会报错。5-12是独立的一批线条。
边界线型
Cell.api.Borders(数字).LineStyle = 1/2/3/4...
1是直线,2、3是虚线,4是点划线,5是双点划线,6是一种较粗的点划线,还具有一种纹理,12是双下划线。线型有13种,可以自行尝试,找到自己喜欢的进行复用。
边界粗细
Cell.api.Borders(数字).Weight= 数值
设置边界的磅数,数值需要<5
边界颜色
Cell.api.Borders(数字).ColorIndex = 颜色索引
颜色和前文的单元格颜色并不遵循同一套规则,需要额外叙述
颜色索引查表如下
对齐方式
水平: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
边界和字体的颜色后来经过查表,能够设置一个数值,数值建议是通过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% 百分比格式