如何通过 Apache POI 在 Excel 中设置单元格样式?

Sae*_*ari 2 java excel apache-poi

我使用 Apache POI 的 3.9 版生成 excel,并且此代码在此方面是正确的:

public CellStyle getCellStyle(XSSFWorkbook workbook){
    CellStyle cellStyle = workbook.createCellStyle();
    cellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("###,###"));
    XSSFFont font = workbook.createFont();
    font.setFontHeightInPoints((short) 11);
    font.setFontName("Tahoma");
    cellStyle.setFont(font);
    CellStyle style = workbook.createCellStyle();
    style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
    cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
    cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
    cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    return cellStyle;
}
Run Code Online (Sandbox Code Playgroud)

但是什么时候升级到 3.17?这些行有错误:

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
    cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
    cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
    cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
Run Code Online (Sandbox Code Playgroud)

Hir*_*ren 5

根据此处的3.17 版发行说明,它说“将单元格对齐常量从 CellStyle 迁移到 Horizo​​ntalAlignment 和 VerticalAlignment 枚举”,而是使用下面的代码

style.setVerticalAlignment(VerticalAlignment.TOP);
    cellStyle.setBorderBottom(BorderStyle.THIN);
    cellStyle.setBorderTop(BorderStyle.THIN);
    cellStyle.setBorderRight(BorderStyle.THIN);
    cellStyle.setBorderLeft(BorderStyle.THIN);
Run Code Online (Sandbox Code Playgroud)