python 设置 excel 单元格颜色填充和字体效果

0、import

import openpyxl
from openpyxl.styles import colors, fills, Font, PattrernFill

1、查看填充类型

print(dir(fills))

fill_types = [ 'FILL_PATTERN_DARKDOWN', 'FILL_PATTERN_DARKGRAY', 'FILL_PATTERN_DARKGRID', 
               'FILL_PATTERN_DARKHORIZONTAL', 'FILL_PATTERN_DARKTRELLIS', 'FILL_PATTERN_DARKUP', 
               'FILL_PATTERN_DARKVERTICAL', 'FILL_PATTERN_GRAY0625', 'FILL_PATTERN_GRAY125', 
               'FILL_PATTERN_LIGHTDOWN', 'FILL_PATTERN_LIGHTGRAY', 'FILL_PATTERN_LIGHTGRID', 
               'FILL_PATTERN_LIGHTHORIZONTAL', 'FILL_PATTERN_LIGHTTRELLIS', 'FILL_PATTERN_LIGHTUP',
               'FILL_PATTERN_LIGHTVERTICAL', 'FILL_PATTERN_MEDIUMGRAY', 'FILL_SOLID']

fill_types = [eval(f'openpyxl.styles.fills.{fill_type}') for fill_type in fill_types]
fill_types

 

 

2 在 excel 中用不同的填充类型体验填充效果

2.1、PatternFill( patternType, fgColor=colors.RED )

# 创建 workbook 实例
wb = openpyxl.Workbook()
ws = wb.active

# 合并单元格--------------------------------------------------------
di = 2   # 每块合并 2 行
dj = 2    # 每块合并 3 列
merged_cells = []    # 合并区域中的单元格列表的列表

for i in range(2, 27, 5):
    for j in range(2, 15, 4):
        # 合并单元格
        ws.merge_cells(start_row=i,
                       start_column=j,
                       end_row=i+di,
                       end_column=j+dj)
        # 添加单元格的列表
        merged_cells.append([ws.cell(row=i+ii, column=j+jj)
                          for ii in range(di+1)
                          for jj in range(dj+1)]
                        )
        
# 创建 Font 实例 --------------------------------------------------------        
font = Font(name='Arial',   # 字体
            sz=20,    # size  字号
            b=True,    # bold 加粗
            i=True,    # italic 倾斜
            underline='single',    #下划线
            strike='double',     # 删除线
            color=colors.BLACK,
           )


# 对合并的单元格区域填充颜色、写入填充类型----------------------------------------
for i, fill_type in enumerate(fill_types):
    # 创建 PatternFill 实例
    fill  = PatternFill(patternType=fill_type,
                        fgColor=colors.RED,
                       )
    for cell in merged_cells[i]:
        cell.fill = fill    # 对每一个合并区域中的单元格进行填充

    merged_cells[i][0].value = fill_type    # 在合并块中左上角单元格中写入值
    merged_cells[i][0].font = font


# 保存工作表
wb.save('test.xlsx')

excel 效果:

 

 

2.2、PatternFill( patternType, fgColor=colors.RED, bgColor=colors.GREEN)

# 对合并的单元格区域填充颜色、写入填充类型----------------------------------------
for i, fill_type in enumerate(fill_types):
    # 创建 PatternFill 实例
    fill  = PatternFill(patternType=fill_type,
                        fgColor=colors.RED,    # 前景色
                        bgColor=colors.GREEN    # 背景色
                       )
    for cell in merged_cells[i]:
        cell.fill = fill    # 对每一个合并区域中的单元格进行填充

    merged_cells[i][0].value = fill_type    # 在合并块中左上角单元格中写入值
    merged_cells[i][0].font = font


# 保存工作表
wb.save('test.xlsx')

excel 效果:

 

 

 

posted @ 2020-02-29 23:33  赏尔  阅读(19042)  评论(0编辑  收藏  举报