6

在我的代码中,如果文本为“PASS”,我想更改 HSSFWorkbook 特定列的单元格颜色。但是当我编写代码时,很多方法和常量,如BRIGHT_GREEN.indexsetFillPatternSOLID_FOREGROUND已被弃用。我已经在 Apache POI 官方网站上搜索了替代方案,但那里给出的代码也已被弃用。我知道如果我提到@deprecation 标签没有问题,但有时在 100-150 行(行)之后,单元格颜色不会改变。谁能告诉我有没有其他方法可以避免@deprecation?仅供参考:我正在使用poi-bin-3.17-beta1-20170701罐子。提前致谢 :)

if(cell.getStringCellValue().equalsIgnoreCase("Pass")){
                    HSSFCellStyle style = workbook.createCellStyle();
                    style.setFillForegroundColor(HSSFColor.BRIGHT_GREEN.index);
                    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
                    cell.setCellStyle(style);
                }
4

1 回答 1

20

从他们的文档中:

/**
 * @deprecated use {@link HSSFColorPredefined} instead
 */
@Deprecated
@Removal(version="3.18")
public static class BRIGHT_GREEN extends HSSFColorRef {
    private static final HSSFColorPredefined ref = HSSFColorPredefined.BRIGHT_GREEN;
    public static final short index = ref.getIndex();
    public static final int index2 = ref.getIndex2();
    public static final short[] triplet = ref.getTriplet();
    public static final String hexString = ref.getHexString();
    public BRIGHT_GREEN() { super(ref); }
}

所以在你的情况下:HSSFColor.HSSFColorPredefined.BRIGHT_GREEN

对于您的setFillPattern

    style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

您的新代码应如下所示

    style = workbook.createCellStyle();
    style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.BRIGHT_GREEN.getIndex())
    style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
于 2017-11-02T14:27:31.773 回答