单元格填充用.fill方法,具体命令是:

PatternFill(patternType=patternType,fgColor=Color(), bgColor=Color())

例如:

sheet.cell(4,5).fill = PatternFill(patternType='solid',start_color=Color(index=5))
# fgColor或start_color 前景色,或起始颜色
# bgColor或end_color   背景色,或结束颜色
# 参数可选项patternType='solid'  纯色填充

其中的patternType 参数可选项是:
patternType = {'darkDown', 'darkUp', 'lightDown', 'darkGrid', 'lightVertical', 
               'solid', 'gray0625', 'darkHorizontal', 'lightGrid', 'lightTrellis', 
               'mediumGray', 'gray125', 'darkGray', 'lightGray', 'lightUp', 
               'lightHorizontal', 'darkTrellis', 'darkVertical'} 

一大坨也不知道到底是啥,另外,既然是给单元格上背景色,怎么参数里又有fgColor前景色,bgColor背景色的设置?这又指的是啥?于是干脆自己试一下

from openpyxl import Workbook
from openpyxl.styles import *


save_file_path="xxxxxxxxxx.xlsx"
wb = Workbook()
ws = wb.active
pattern_Type =['darkDown', 'darkUp', 'lightDown', 'darkGrid', 'lightVertical',
               'solid', 'gray0625', 'darkHorizontal', 'lightGrid', 'lightTrellis',
               'mediumGray', 'gray125', 'darkGray', 'lightGray', 'lightUp',
               'lightHorizontal', 'darkTrellis', 'darkVertical']
#设置列宽和行高
ws.column_dimensions['a'].width = 15
ws.column_dimensions['b'].width = 25
ws.column_dimensions['c'].width = 25
ws.column_dimensions['d'].width = 25
for i in range(1,20):
    ws.row_dimensions[i].height=25
#列标题
ws.cell(1,2).value="fgColor或start_color"
ws.cell(1,3).value="bgColor或end_color"
ws.cell(1,4).value="fgColor,bgColor"
#填充单元格颜色
for col in range(1,5):
    for row in range(1, 19):
        if col==1:
            ws.cell(row+1,col).value=pattern_Type[row-1]
        elif col==2:
            ws.cell(row+1,col).fill=PatternFill(patternType=pattern_Type[row-1],start_color=Color(index=2))
        elif col==3:
            ws.cell(row+1,col).fill=PatternFill(patternType=pattern_Type[row-1], end_color=Color(index=3))
        else:
            ws.cell(row+1,col).fill=PatternFill(patternType=pattern_Type[row-1],start_color=Color(index=2), end_color=Color(index=3))

wb.save(save_file_path) 

在不同的patternType参数下,分别用只加fgColor参数,只加bgColor参数,两个都加测试

PatternFill(patternType,fgColor,bgColor)

最后效果是这样:测试用的fgColor=Color(index=2),也就是红色,bgColor=Color(index=3)也就是绿色

 可以看出,patternType是指单元格填充底纹纹路样式,fgColor前景色就是指花纹纹路的颜色是所设定值,bgColor背景色是指花纹纹路为默认黑色,单元格背景颜色为所设定值,这样也就理解了,在fgColor+bgColor双参数下,指对花纹(前景)设一个颜色,对单元格背景设另一个颜色。

可以看到特殊的是'solid'样式,也就是纯色填充样式,fgColor+bgColor时,由于fgColor是完全纯色,也就是一整块纹路,把bgColor给完全覆盖了,所以效果跟只有fgColor一样,即只看到前景(花纹)红色,看不到背景(单元格)绿色。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐