如何为REST API导出至Excel的风险类数据添加校验高亮逻辑?
解决方案:两种方式实现不符合规则数据的高亮/告警
方式一:Pandas导出时直接配置Excel条件格式
这种方式能让导出的Excel直接自带高亮规则,无需后续手动调整,适合自动化流程。
核心是借助openpyxl引擎(Pandas导出Excel支持该引擎),给目标单元格设置条件格式规则。代码示例:
import pandas as pd from openpyxl.styles import PatternFill from openpyxl.utils.dataframe import dataframe_to_rows from openpyxl import Workbook # 假设你的API数据已存入df # df = pd.DataFrame(...) # 从REST API获取的数据集 # 创建工作簿和工作表 wb = Workbook() ws = wb.active # 将DataFrame写入工作表 for row in dataframe_to_rows(df, index=False, header=True): ws.append(row) # 定义高亮样式(红色填充,可自定义颜色代码) red_fill = PatternFill(start_color='FFC7CE', end_color='FFC7CE', fill_type='solid') # 给CI列设置条件格式:Service为Risk且CI不在指定列表时高亮 # 注意列对应关系:Service是第6列(F列),CI是第7列(G列),数据从第2行开始 ws.conditional_formatting.add( f'G2:G{len(df)+1}', { 'type': 'formula', 'formula': ['AND($F2="Risk", NOT(OR($G2="RMP", $G2="SAP", $G2="Aravo")))'], 'stopIfTrue': False, 'fill': red_fill } ) # 保存文件 wb.save('incidents_with_validation.xlsx')
如果习惯用xlsxwriter引擎,逻辑类似,只需替换对应的条件格式API即可。
方式二:在Excel中手动设置条件格式(解决你IF函数失效的问题)
若不想修改代码,直接在已导出的Excel中操作:
- 选中CI列的所有数据单元格(比如G2到最后一行)
- 点击「开始」→「条件格式」→「新建规则」
- 选择「使用公式确定要设置格式的单元格」
- 在公式框输入:
注意:=AND($F2="Risk", NOT(OR($G2="RMP", $G2="SAP", $G2="Aravo")))$F2对应你的Service列,$G2对应CI列,根据实际列位置调整 - 点击「格式」设置填充颜色(比如红色),确认后保存即可。
你之前用IF函数失败,大概率是只通过IF返回文本提示,没结合条件格式触发样式。直接用条件格式的公式规则,能直接定位并高亮不符合条件的单元格,比单独用IF更高效。
额外选项:导出前用Pandas生成告警列表
如果需要提前筛选出不符合规则的数据单独留存,可以在DataFrame中新增标记列:
# 新增标记列 df['不符合规则'] = df.apply( lambda x: '是' if x['Service'] == 'Risk' and x['CI'] not in ['RMP', 'SAP', 'Aravo'] else '否', axis=1 ) # 单独导出不符合规则的数据作为告警文件 df[df['不符合规则'] == '是'].to_excel('invalid_incidents_alert.xlsx', index=False)
内容的提问来源于stack exchange,提问作者Dinerz
相关产品推荐
相关产品推荐

