今天我们要解决的问题是:批量修改excel的单元格样式,比如边框、填充颜色、对齐方式等等。
一、需求
将「支行数据」文件夹下的所有excel表的单元格设置为统一样式。为便于后面介绍,将数据区域划分为表头(第一行)、表中(中间部分)、表尾(最后一行)。下面具体我们需要的样式:
边框线条:表头的边框样式为有细的底边线,表中为细的右边线,表尾为细的底边线和右边线;
填充颜色:表头为淡黄色,表中为浅黄色,表尾为淡橙色。
-
对齐方式:所有单元格在水平和竖直方向对齐。
调整前的样式如下
二、思路
如何实现批量调整,在前两篇文章里说过,所以接下来以对单个excel调整为例,说说调整的思路。
在手动调整excel中单元格的样式时,我们的操作是:选中单元格-在样式工具栏选择我们要调整的属性(比如填充颜色)-点击属性值(比如红色),这样单元格就被填充为红色了。
与之类似,使用代码调整单元格样式的流程是:先定义属性的样式,再循环修改单元格。
-
定义属性的样式。实际是在进行「类的实例化」操作,也就是创建样式类的实例。举个例子,PatternFill是颜色样式的类,对其进行实例化操作:fill_style = PatternFill(patternType='solid',fgColor='FFFF00'),即定义了一个纯色填充,填充颜色为黄色的样式对象。这里通过一个简要的表格把常用的类的用法梳理如下。在实例化PatternFill类时,参数fgColor表示前景颜色,需要传入相应颜色的 RGB 值。
- 修改单元格。这一步实际是在进行「为属性赋值」的操作,也就是将实例化得到的对象赋值给单元格的相关属性(涉及到的属性及写法可见上一篇文章中整理的表格,比如,单元格.fill 代表单元格的颜色属性)。举个例子,修改A1单元格的填充颜色为黄色,可以写为ws['A1'].fill = fill_style。至于如何实现循环修改,借助for循环先获取行,再对行执行for循环,获取单元格。