最近写一个工具,要用到openpyxl设置excel单元格属性。网上关于这方面的介绍不少,其他属性设置的介绍都够详细了,但设置单元格填充属性的介绍都比较简单。于是自己查看openpyxl模块的源代码,并测试摸索,终于弄清楚了使用方法,现总结一下。若有错漏,敬请指出!
一、需要的导入
from openpyxl.styles import PatternFill, GradientFill
二、语法及可使用的参数说明
Excel的单元格填充有两种类型:PatternFill图案填充,和 GradientFill渐变色填充(对应Excel单元格格式设置面板中填充选项卡上的填充效果)。二者只能任选其一,不能同时使用。
1.PatternFill图案填充。
语法:
cell.fill = PatternFill(patternType=None, fgColor=Color(), bgColor=Color(), fill_type=None, start_color=None, end_color=None)
参数说明:
patternType或fill_type:填充图案类型。
fgColor或start_color:图案前景色。
bgColor或end_color:图案背景色。
六个参数实际生效的是三个,前述三组是别名关系。当patternType与fill_type同时给出时, fill_type优先生效,其值将赋给patternType。同理,start_color优先于fgColor生效,end_color优先于bgColor生效。
patternType或fill_type为'none'时无填充。其余可设置的值及对应的图案为:
颜色:Color(rgb=None, indexed=None, auto=None, theme=None, tint=0.0, type=None)
若省略参数,则默认黑色。若指定颜色,有四种方式:
第一优先度方式:用颜色索引号,可用范围为1-63。
如fgColor=Color(rgb=None, indexed=4, auto=None, theme=None, tint=0.0, type='indexed')。可简写为fgColor=Color(indexed=4)。指定蓝色。
第二优先度方式:使用主题颜色号。
如fgColor=Color(rgb=None, indexed=None, auto=True, theme=None, tint=0.0, type='auto')。fgColor=Color(theme=1, tint=0.4),指定主题颜色1,浅化40%。tint值若为负值,如-0.25,表示主题颜色号深化25%。
第三优先度方式:使用自动颜色:
如fgColor=Color(rgb=None, indexed=None, auto=True, theme=None, tint=0.0, type='auto')。可简写为fgColor=Color(auto=Ture)。fgColor颜色auto为白色,bgColor颜色auto为无颜色。
第四优先度方式:使用不带透明度的rgb颜色,如fgColor=Color(rgb='FF0000')或fgColor='FF0000'。也可以使用带透明度的rgb颜色,如fgColor=Color(rgb='10FF0000')或fgColor='10FF0000'。实际测试中透明度值似乎不起作用。
第一种方式的颜色索引与颜色对应关系如下:
Index |
|||||
0-4 |
00000000 |
00FFFFFF |
00FF0000 |
0000FF00 |
000000FF |
5-9 |
00FFFF00 |
00FF00FF |
0000FFFF |
00000000 |
00FFFFFF |
10-14 |
00FF0000 |