shanger

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 效果:

 

 

 

分类:

技术点:

相关文章: