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 效果:
非学无以广才,非志无以成学。