Apache POI SXSSFWorkbook стиль ячейки не работает - PullRequest
0 голосов
/ 07 января 2019

Проблема мучила меня несколько дней. Вот подробное описание.
Я хочу создать большой файл Excel (.xlsx) с помощью SXSSFWorkbook, который занимает меньше места в памяти.
Вот код

`public static CellStyle createCellStyle2(String fontColor, String backgroundColor, short dataFormat, Workbook workbook, Map<String, CellStyle> xssfCellStyleMap) throws Exception {
    SXSSFWorkbook sxssfWorkbook = (SXSSFWorkbook) workbook;
    String md5 = DigestUtils.md5Hex(fontColor + backgroundColor + dataFormat);
    CellStyle cellStyle = xssfCellStyleMap.get(md5);
    if (ObjectUtil.isEmpty(cellStyle)) {
        cellStyle = sxssfWorkbook.createCellStyle();
        cellStyle.setDataFormat(dataFormat);
        if (!ObjectUtil.isEmpty(backgroundColor)) {
            XSSFColor XSSFBackgroundColor = getXSSFColor(backgroundColor);
            cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);

 cellStyle.setFillForegroundColor(XSSFBackgroundColor.getIndexed());
            }
            if (!ObjectUtil.isEmpty(fontColor)) {
                XSSFColor XSSFFontColor = getXSSFColor4Font(fontColor);
                org.apache.poi.ss.usermodel.Font rowXSSFFont = sxssfWorkbook.createFont();
                rowXSSFFont.setColor(XSSFFontColor.getIndexed());
                cellStyle.setFont(rowXSSFFont);
            } else {
                org.apache.poi.ss.usermodel.Font rowXSSFFont = sxssfWorkbook.createFont();
                cellStyle.setFont(rowXSSFFont);
            }
            xssfCellStyleMap.put(md5, cellStyle);
        }
        return cellStyle;
    }` 

public static XSSFColor getXSSFColor(String hexaColor) throws Exception {
        int r = Integer.parseInt((hexaColor.substring(0, 2)), 16);
        int g = Integer.parseInt((hexaColor.substring(2, 4)), 16);
        int b = Integer.parseInt((hexaColor.substring(4, 6)), 16);
        java.awt.Color color = new Color(r, g, b);
        return new XSSFColor(color);
    }

Ниже окончательно сгенерированный файл
введите описание изображения здесь

На самом деле, я хочу подать как это
введите описание изображения здесь

Если вам известна какая-либо причина по этому поводу. пожалуйста, дайте мне совет. Большое спасибо!

...