Есть ли альтернативный способ избежать устаревания в Apache POI для встроенных цветов HSSF?

В моем коде я хочу изменить цвета ячеек определенного столбца HSSFWorkbook, если текст "PASS". Но когда я писал код, многие методы и константы, такие как BRIGHT_GREEN.index, setFillPattern, SOLID_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);
                }

1 ответ

Решение

Из их документации:

/**
 * @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);
Другие вопросы по тегам