gpt4 book ai didi

java - 如何根据 boolean 值在单元格中显示交通灯图标?

转载 作者:行者123 更新时间:2023-12-02 01:21:27 25 4
gpt4 key购买 nike

如果valuetrue并且红色交通灯为valuefalse,我需要在单元格中显示绿色交通灯.

我阅读了一些有关 ConditionalFormattingRule 的文档,但我不明白它是如何工作的...

算法希望

...
Cell cell = sheet.getRow(1).getCell(5)
if (value) {
cell.setIcon(TRAFFIC_LIGHT_GREEN)
}
else {
cell.setIcon(TRAFFIC_LIGHT_RED)
}
...

有人可以帮助我理解这一点吗?

提前致谢,

问候

最佳答案

IconMultiStateFormatting 默认具有以下阈值:

  1. 如果单元格值大于或等于中所有值的 67%范围,然后是绿色。
  2. 如果单元格值低于但大于或等于所有单元格值的 33%值在该范围内,然后呈黄色。
  3. 如果单元格值低于范围内所有值的 33%,然后是红色。

如果您需要其他阈值,则必须更改默认值。

以下代码设置以下阈值:

  1. 如果单元格值大于或等于 1,则为绿色。
  2. 如果单元格值较低但大于或等于 0,则为黄色。
  3. 如果单元格值小于 0,则为红色。

使用当前 apache poi 4.1.0 的完整示例:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import org.apache.poi.ss.util.CellRangeAddress;

import java.io.FileOutputStream;

class ConditionalFormattingIconSet {

public static void main(String[] args) throws Exception {

Workbook workbook = new XSSFWorkbook();

Sheet sheet = workbook.createSheet("Sheet1");

CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

Cell cell = sheet.createRow(0).createCell(0);
cell.setCellValue(-1);
cell.setCellStyle(cellStyle);

SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();

ConditionalFormattingRule rule = sheetCF.createConditionalFormattingRule(IconMultiStateFormatting.IconSet.GYR_3_TRAFFIC_LIGHTS);

//rule.getMultiStateFormatting().setIconOnly(true);

IconMultiStateFormatting iconMultiStateFormatting = rule.getMultiStateFormatting();
ConditionalFormattingThreshold[] thresholds = iconMultiStateFormatting.getThresholds();
if (thresholds.length == 3) {
for (int i = 0; i < 3; i++) {
ConditionalFormattingThreshold threshold = thresholds[i];
System.out.println(i + " : " + threshold.getRangeType()); // default
System.out.println(i + " : " + threshold.getValue()); // default
// changing the thresholds
if (i == 0) {
threshold.setValue(0d);
} else if (i == 1) {
threshold.setRangeType(ConditionalFormattingThreshold.RangeType.NUMBER);
threshold.setValue(0d);
} else if (i == 2) {
threshold.setRangeType(ConditionalFormattingThreshold.RangeType.NUMBER);
threshold.setValue(1d);
}
}
}

ConditionalFormattingRule [] cfRules = {rule};

CellRangeAddress[] regions = {CellRangeAddress.valueOf("A1:A1")};

sheetCF.addConditionalFormatting(regions, cfRules);

FileOutputStream fileOut = new FileOutputStream("ConditionalFormattingIconSet.xlsx");
workbook.write(fileOut);
fileOut.close();

}
}

关于java - 如何根据 boolean 值在单元格中显示交通灯图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57604499/

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