用java改变excel单元格颜色

我必须用一个简单的公式validation单元格,如果这是无效的,改变单元格的颜色,如黄色或红色,没关系。

到目前为止,我已经看到并尝试这个:

SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting(); // formula = =SUMA(L13+M13+N13+O13) //=SUMA(M4+N4+O4+P4+L:L ConditionalFormattingRule rule2 = sheetCF.createConditionalFormattingRule(ComparisonOperator.EQUAL, "4"); PatternFormatting fill2 = rule2.createPatternFormatting(); fill2.setFillBackgroundColor(IndexedColors.GREEN.index); fill2.setFillPattern(PatternFormatting.SOLID_FOREGROUND); CellRangeAddress[] regions = { CellRangeAddress.valueOf("L2:L5")}; sheetCF.addConditionalFormatting(regions, rule2); } 

如果价值是四,我知道,那改变我颜色,但是

我怎样才能申请的总和公式:

在这里输入图像描述

我需要在列L的所有行中validationm2 + n2 + o2 + p2和m3 + n3 + o3 + p3等的总和。

仅供参考,我从数据库中得到的值,这些值是像在图片与十进制,但我得到他们在Java中的int像这样:

 while((j < fallas) && rset.next() ){ row = sheet.createRow(j+1); row.createCell(0).setCellValue((rset.getBigDecimal(1)).toString()); row.createCell(1).setCellValue(rset.getString(2)); row.createCell(2).setCellValue(rset.getString(3)); row.createCell(3).setCellValue(rset.getString(4)); row.createCell(4).setCellValue(rset.getString(5)); row.createCell(5).setCellValue(rset.getString(6)); row.createCell(6).setCellValue(rset.getString(7)); row.createCell(7).setCellValue((rset.getBigDecimal(8)).toString()); row.createCell(8).setCellValue((rset.getBigDecimal(9)).toString()); row.createCell(9).setCellValue((rset.getBigDecimal(10)).toString()); row.createCell(10).setCellValue(rset.getString(11)); //row.createCell(11).setCellFormula("SUMA(L13+M13+N13+O13)"); row.createCell(11).setCellValue(String.valueOf((rset.getBigDecimal(12)).toString())); row.createCell(12).setCellValue(String.valueOf((rset.getBigDecimal(13)).toString())); row.createCell(13).setCellValue(String.valueOf((rset.getBigDecimal(14)).toString())); row.createCell(14).setCellValue(String.valueOf((rset.getBigDecimal(15)).toString())); row.createCell(15).setCellValue(String.valueOf((rset.getBigDecimal(16)).toString())); row.createCell(16).setCellValue((rset.getString(17))); row.createCell(17).setCellValue((rset.getString(18))); row.createCell(18).setCellValue(rset.getString(19)); row.createCell(19).setCellValue(rset.getString(20)); row.createCell(20).setCellValue("-"); row.createCell(21).setCellValue(new java.sql.Date(rset.getDate(22).getTime()).toString()); row.createCell(22).setCellValue((rset.getBigDecimal(23)).toString()); row.createCell(23).setCellValue("-"); row.createCell(24).setCellValue("-"); row.createCell(25).setCellValue("-"); row.createCell(26).setCellValue("-"); row.createCell(27).setCellValue((rset.getBigDecimal(28)).toString()); row.createCell(28).setCellValue((rset.getBigDecimal(29)).toString()); row.createCell(29).setCellValue(rset.getString(30)); row.createCell(30).setCellValue(rset.getString(31)); row.createCell(31).setCellValue(rset.getString(32)); 

L,M,N,O,P分别是createCell(11),12,13,14等

如果我只是把公式放在“createConditionalFormattingRule”它什么也不做:(请帮助我!

你对这个数字进行了什么validation?

假设这些单元格的总和与一些数字相比,你可以试试这个:

 // Condition 1: Formula Is =SUM($M2+$N2+$O2+$P2) > 75 ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule("SUM($M2+$N2+$O2+$P2)>75"); 

全部一起

 SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting(); // Condition 1: Formula Is =SUM($M2+$N2+$O2+$P2) > 75 ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule("SUM($M2+$N2+$O2+$P2)>75"); PatternFormatting fill1 = rule1.createPatternFormatting(); fill1.setFillBackgroundColor(IndexedColors.RED.index); fill1.setFillPattern(PatternFormatting.SOLID_FOREGROUND); CellRangeAddress[] regions = { CellRangeAddress.valueOf("L2:L5") }; sheetCF.addConditionalFormatting(regions, rule1); 

这是一个链接 ,显示了使用java创build条件格式的多种方法。