影刀RPA Excel条件格式与数据条自动设置:让报表一眼看出问题

📅 2026/7/9 0:58:15 👁️ 阅读次数 📝 编程学习
影刀RPA Excel条件格式与数据条自动设置:让报表一眼看出问题

影刀RPA Excel条件格式与数据条自动设置:让报表一眼看出问题

作者:林焱

采集完数据写入Excel只是第一步。如果一份销售报表,1000行数字密密麻麻,很难一眼看出哪个产品卖得好、哪个在掉队。条件格式(Conditional Formatting)就是解决这个问题的——自动给数据上色、加图标、画进度条。

openpyxl设置条件格式

影刀内置的Excel指令不支持条件格式,需要用openpyxl:

fromopenpyxlimportWorkbookfromopenpyxl.stylesimportPatternFill,Fontfromopenpyxl.formatting.ruleimportCellIsRule,DataBarRule,ColorScaleRule wb=Workbook()ws=wb.active# 先写数据data=[["产品","销量","环比"],["商品A",120,15],["商品B",85,-8],["商品C",200,25]]forrowindata:ws.append(row)# 1. 高亮规则:销量>150标绿色,<100标红色ws.conditional_formatting.add('B2:B10',CellIsRule(operator='greaterThan',formula=['150'],fill=PatternFill(start_color='C6EFCE',end_color='C6EFCE',fill_type='solid')))ws.conditional_formatting.add('B2:B10',[video(video-qSGFXpzG-1783501825534)(type-csdn)(url-https://live.csdn.net/v/embed/526818)(image-https://v-blog.csdnimg.cn/asset/582d14c3bd0451c5399cd990b56e2a0d/cover/Cover0.jpg)(title-拼多多店群自动化报活动上架!)]CellIsRule(operator='lessThan',formula=['100'],fill=PatternFill(start_color='FFC7CE',end_color='FFC7CE',fill_type='solid')))# 2. 数据条:销量列加进度条ws.conditional_formatting.add('B2:B10',DataBarRule(start_type='min',end_type='max',color='4472C4',showValue=True))# 3. 色阶:环比列,红白绿渐变ws.conditional_formatting.add('C2:C10',ColorScaleRule(start_type='min',start_color='FF4444',mid_type='percentile',mid_value=50,mid_color='FFFFFF',end_type='max',end_color='44FF44'))wb.save("带条件格式的报表.xlsx")

图标集

fromopenpyxl.formatting.ruleimportIconSetRule# 三色箭头图标ws.conditional_formatting.add('C2:C10',![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4c23dce1bfc74239bdd7eed60e29878a.png#pic_center)IconSetRule(icon_style='3Arrows',type='num',values=[0,0])# <0红箭头, =0黄箭头, >0绿箭头)

可用的图标样式:3Arrows,3TrafficLights,3Stars,4Rating,5Quarters等。

公式条件格式(更灵活)

fromopenpyxl.formatting.ruleimportFormulaRule# 高亮"环比下降"的行ws.conditional_formatting.add('A2:C10',FormulaRule(formula=['$C2<0'],fill=PatternFill(start_color='FFE0E0',end_color='FFE0E0',fill_type='solid')))# 高亮包含"手机"的产品名ws.conditional_formatting.add('A2:A10',FormulaRule(formula=['ISNUMBER(SEARCH("手机",$A2))'],font=Font(bold=True,color='FF0000')))

自动化完整方案

在影刀中封装成一个优化函数:

defauto_format_excel(filepath,sheet_name=None):"""给Excel自动添加条件格式"""wb=openpyxl.load_workbook(filepath)ws=wb[sheet_name]ifsheet_nameelsewb.active# 自动检测数据区域max_row=ws.max_row max_col=ws.max_column# 对数值列自动加数据条forcolinrange(1,max_col+1):cell_value=ws.cell(row=2,column=col).value# 看第二行确认列类型ifisinstance(cell_value,(int,float)):col_letter=ws.cell(row=1,column=col).column_letter data_range=f"{col_letter}2:{col_letter}{max_row}"ws.conditional_formatting.add(data_range,DataBarRule(start_type='min',end_type='max',color='4472C4'))# 自动调整列宽forcolinrange(1,max_col+1):col_letter=ws.cell(row=1,column=col).column_letter max_width=max(len(str(ws.cell(row=r,column=col).valueor''))forrinrange(1,max_row+1))ws.column_dimensions[col_letter].width=min(max_width*1.2+2,40)wb.save(filepath)print("条件格式已添加")

踩坑实录

坑1:条件格式覆盖范围错误

范围设错了,可能导致条件格式偏移。'B2:B10'只对B2到B10生效。如果后面数据增加了,新行不会自动带条件格式。建议把范围设得比实际数据大(如'B2:B1000')。

坑2:条件格式太多导致Excel卡顿

TEMU店群矩阵自动化运营核价报活动

一个Sheet里几百条条件格式规则会让Excel打开很慢。原则:同一类规则合并成一个范围,不要为每一行单独设规则。

坑3:openpyxl创建的工作簿没有默认样式

openpyxl.Workbook()创建的新文件没有Excel默认的字体和字号。建议用load_workbook打开一个设计好的模板文件,在此基础上添加数据和条件格式。

坑4:中文环境下Excel的颜色显示差异

某些颜色值在Excel中显示和你预期不一致(Excel有自己的调色板限制)。openpyxl的ColorScaleRule使用的颜色最好用标准颜色名(如'FF4444'而不是'#FF4444')。

写在最后

数据本身是枯燥的,但用条件格式可视化之后就能一眼发现问题。影刀负责采集和写入数据,openpyxl负责美化——让报表不仅有数据,还有洞察。