如何用Python的OpenPyXL切换活动工作表并批量处理指定工作表
批量给指定Excel工作表添加条件格式(OpenPyXL实现)
要批量处理索引1、2、3的三个工作表,无需手动切换活动工作表,直接遍历目标工作表列表即可完成操作。以下是修改后的完整代码:
from openpyxl import load_workbook from openpyxl.styles import PatternFill, Font from openpyxl.formatting.rule import FormulaRule wb = load_workbook('uk-sheet.xlsx') # 定义填充和字体样式(只需定义一次,循环复用) fill_red = PatternFill(start_color='ee7811', end_color='ee7811', fill_type='solid') fill_green = PatternFill(start_color='11ee66', end_color='11ee66', fill_type='solid') fill_yellow = PatternFill(start_color='dfee11', end_color='dfee11', fill_type='solid') font = Font(bold=True, color='000000') # 条件格式应用范围 cf_range = '$A$2:$AT$42732' # 遍历目标工作表(索引1、2、3) for ws_index in [1, 2, 3]: ws = wb.worksheets[ws_index] # 添加红色填充规则 ws.conditional_formatting.add(cf_range, FormulaRule( formula=['IF($AR2>0.309,TRUE,FALSE)'], stopIfTrue=None, fill=fill_red, font=font) ) # 添加绿色填充规则 ws.conditional_formatting.add(cf_range, FormulaRule( formula=['IF(AND($AR2>0.0001,$AR2<=0.309),TRUE,FALSE)'], stopIfTrue=None, fill=fill_green, font=font) ) # 添加黄色填充规则 ws.conditional_formatting.add(cf_range, FormulaRule( formula=['IF(AND($AR2=0,$AK2<4),TRUE,FALSE)'], stopIfTrue=None, fill=fill_yellow, font=font) ) # 添加另一条红色填充规则 ws.conditional_formatting.add(cf_range, FormulaRule( formula=['IF(AND($AR2=0, $AK2>3),TRUE,FALSE)'], stopIfTrue=None, fill=fill_red, font=font) ) wb.save('uk-sheet2.xlsx')
关键说明
wb.worksheets返回所有工作表的列表,按索引直接访问目标工作表,无需切换活动表- 样式对象(填充、字体)只初始化一次,循环中重复使用,避免冗余创建
- 循环内对每个工作表执行完全相同的条件格式添加逻辑,实现批量处理
内容的提问来源于stack exchange,提问作者Oleksandr Mishura
相关产品推荐
相关产品推荐

