POI 单元格条件格式设置

场景:导出的excel 改变某单元格的值,另外一个单元格的背景色也跟着变;

        a单元格中等于添加时b单元格背景色为红色;

        a单元格中等于修改时b单元格背景色为黄色

        a单元格中等于删除时b单元格背景色为绿色

/*** 条件格式* @param sheet* @param startRow 开始行(从1开始)* @param endRow 结束行(从1开始)* @param col 公式列号(从1开始)* @param cellCol 设置条件格式的单元格列号(从0开始)*/public static void setCellBack(XSSFSheet sheet,int startRow,int endRow,int col, int cellCol){String startColNum=ExcelColUtil.getColumnNum(col);//获得条件格式对象XSSFSheetConditionalFormatting scf = sheet.getSheetConditionalFormatting();for(int row=startRow;row<=endRow;row++){//设置"条件格式"的规则,本例选择的条件类型是:"单元格数据"//如果当前单元格的数据等于复用,则显示红色XSSFConditionalFormattingRule cf_red_rule = scf.createConditionalFormattingRule("AND($"+startColNum+"$"+row+"=\"添加\")");XSSFPatternFormatting cf_red = cf_red_rule.createPatternFormatting();cf_red.setFillBackgroundColor(red);//如果当前单元格的数据等于利旧,则显示黄色XSSFConditionalFormattingRule cf_yellow_rule = scf.createConditionalFormattingRule("AND($"+startColNum+"$"+row+"=\"修改\")");XSSFPatternFormatting cf_yellow = cf_yellow_rule.createPatternFormatting();cf_yellow.setFillBackgroundColor(yellow);//如果当前单元格的数据等于待定,则显示绿色XSSFConditionalFormattingRule cf_green_rule = scf.createConditionalFormattingRule("AND($"+startColNum+"$"+row+"=\"删除\")");XSSFPatternFormatting cf_green = cf_green_rule.createPatternFormatting();cf_green.setFillBackgroundColor(green);XSSFConditionalFormattingRule[] cfRules = {cf_yellow_rule, cf_red_rule,cf_green_rule};//条件格式应用的单元格范围CellRangeAddress[] regions = {new CellRangeAddress(row-1, row-1, cellCol, cellCol)};scf.addConditionalFormatting(regions, cfRules);}}

本文链接:https://my.lmcjl.com/post/11238.html

展开阅读全文

4 评论

留下您的评论.