You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:19:56