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

发布时间:2026/7/9 0:52:56
影刀RPA Excel条件格式与数据条自动设置:让报表一眼看出问题 影刀RPA Excel条件格式与数据条自动设置让报表一眼看出问题作者林焱采集完数据写入Excel只是第一步。如果一份销售报表1000行数字密密麻麻很难一眼看出哪个产品卖得好、哪个在掉队。条件格式Conditional Formatting就是解决这个问题的——自动给数据上色、加图标、画进度条。openpyxl设置条件格式影刀内置的Excel指令不支持条件格式需要用openpyxlfromopenpyxlimportWorkbookfromopenpyxl.stylesimportPatternFill,Fontfromopenpyxl.formatting.ruleimportCellIsRule,DataBarRule,ColorScaleRule wbWorkbook()wswb.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(operatorgreaterThan,formula[150],fillPatternFill(start_colorC6EFCE,end_colorC6EFCE,fill_typesolid)))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(operatorlessThan,formula[100],fillPatternFill(start_colorFFC7CE,end_colorFFC7CE,fill_typesolid)))# 2. 数据条销量列加进度条ws.conditional_formatting.add(B2:B10,DataBarRule(start_typemin,end_typemax,color4472C4,showValueTrue))# 3. 色阶环比列红白绿渐变ws.conditional_formatting.add(C2:C10,ColorScaleRule(start_typemin,start_colorFF4444,mid_typepercentile,mid_value50,mid_colorFFFFFF,end_typemax,end_color44FF44))wb.save(带条件格式的报表.xlsx)图标集fromopenpyxl.formatting.ruleimportIconSetRule# 三色箭头图标ws.conditional_formatting.add(C2:C10,![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4c23dce1bfc74239bdd7eed60e29878a.png#pic_center)IconSetRule(icon_style3Arrows,typenum,values[0,0])# 0红箭头, 0黄箭头, 0绿箭头)可用的图标样式3Arrows,3TrafficLights,3Stars,4Rating,5Quarters等。公式条件格式更灵活fromopenpyxl.formatting.ruleimportFormulaRule# 高亮环比下降的行ws.conditional_formatting.add(A2:C10,FormulaRule(formula[$C20],fillPatternFill(start_colorFFE0E0,end_colorFFE0E0,fill_typesolid)))# 高亮包含手机的产品名ws.conditional_formatting.add(A2:A10,FormulaRule(formula[ISNUMBER(SEARCH(手机,$A2))],fontFont(boldTrue,colorFF0000)))自动化完整方案在影刀中封装成一个优化函数defauto_format_excel(filepath,sheet_nameNone):给Excel自动添加条件格式wbopenpyxl.load_workbook(filepath)wswb[sheet_name]ifsheet_nameelsewb.active# 自动检测数据区域max_rowws.max_row max_colws.max_column# 对数值列自动加数据条forcolinrange(1,max_col1):cell_valuews.cell(row2,columncol).value# 看第二行确认列类型ifisinstance(cell_value,(int,float)):col_letterws.cell(row1,columncol).column_letter data_rangef{col_letter}2:{col_letter}{max_row}ws.conditional_formatting.add(data_range,DataBarRule(start_typemin,end_typemax,color4472C4))# 自动调整列宽forcolinrange(1,max_col1):col_letterws.cell(row1,columncol).column_letter max_widthmax(len(str(ws.cell(rowr,columncol).valueor))forrinrange(1,max_row1))ws.column_dimensions[col_letter].widthmin(max_width*1.22,40)wb.save(filepath)print(条件格式已添加)踩坑实录坑1条件格式覆盖范围错误范围设错了可能导致条件格式偏移。B2:B10只对B2到B10生效。如果后面数据增加了新行不会自动带条件格式。建议把范围设得比实际数据大如B2:B1000。坑2条件格式太多导致Excel卡顿TEMU店群矩阵自动化运营核价报活动一个Sheet里几百条条件格式规则会让Excel打开很慢。原则同一类规则合并成一个范围不要为每一行单独设规则。坑3openpyxl创建的工作簿没有默认样式openpyxl.Workbook()创建的新文件没有Excel默认的字体和字号。建议用load_workbook打开一个设计好的模板文件在此基础上添加数据和条件格式。坑4中文环境下Excel的颜色显示差异某些颜色值在Excel中显示和你预期不一致Excel有自己的调色板限制。openpyxl的ColorScaleRule使用的颜色最好用标准颜色名如FF4444而不是#FF4444。写在最后数据本身是枯燥的但用条件格式可视化之后就能一眼发现问题。影刀负责采集和写入数据openpyxl负责美化——让报表不仅有数据还有洞察。