Есть ли альтернативный способ избежать устаревания в 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);