gpt4 book ai didi

java - 用java改变excel单元格颜色

转载 作者:行者123 更新时间:2023-11-30 09:15:48 43 4
gpt4 key购买 nike

我必须使用一个简单的公式来验证单元格,如果它无效,请将单元格颜色更改为黄色或红色,这并不重要。

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

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,那会改变我的颜色,但是

如何应用总和的公式:

enter image description here

我需要在 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));

L、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);

这是一个link显示了使用 java 创建条件格式的多种方法。

关于java - 用java改变excel单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19718630/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com