Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java更改excel单元格颜色_Java_Excel_Colors_Apache Poi - Fatal编程技术网

使用java更改excel单元格颜色

使用java更改excel单元格颜色,java,excel,colors,apache-poi,Java,Excel,Colors,Apache Poi,我必须用一个简单的公式来验证单元格,如果这个公式无效,可以改变单元格的颜色,比如黄色或红色,这都无关紧要 到目前为止,我已经看到并尝试了以下内容: SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting(); // formula = =SUMA(L13+M13+N13+O13) //=SUMA(M4+N4+O4+P4+L:L ConditionalFormattingRule rule

我必须用一个简单的公式来验证单元格,如果这个公式无效,可以改变单元格的颜色,比如黄色或红色,这都无关紧要

到目前为止,我已经看到并尝试了以下内容:

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);
}
如果值是4,我知道会改变颜色,但是

如何应用以下各项之和的公式:

我需要在列L的所有行中验证m2+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));
while((j
五十、 M、N、O、p是createCell(11)、12、13、14等


如果我只是将公式放在“createConditionalFormattingRule”上,它不会做任何事情:(,请帮帮我!

您要根据什么验证总和

假设将这些单元格的总和与某个数字进行比较,您可以尝试以下方法:

// 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创建条件格式的多种方法。

谢谢@JoshC!谢谢,我已经得到了解决方案,但没有使用条件格式规则…为了完成解决方案,我必须从java进行操作,然后是“ifs”为了改变手机的风格,非常感谢你抽出时间,我会试试你说的:),祝你有一个愉快的一天。