POI删除单元格的背景颜色

use*_*716 0 java excel apache-poi

我正在从一个单元格复制一个单元格样式,以将其用于许多其他行:

        HSSFCellStyle styleHdr = workbook.createCellStyle();
        if ( styleHeader != null)
            styleHdr.cloneStyleFrom(styleHeader);
        String regexNumbers = "(^[0-9]+[.]{0,1}[0-9]*$)";
        String regNatZahl = "(^[0-9]+$)";

        CellStyle numericStyle = workbook.createCellStyle();
        numericStyle.setDataFormat((short) 0);
        HSSFFont font= workbook.createFont();
        font.setBoldweight((short) 0);
        styleHdr.setBorderLeft(CellStyle.BORDER_NONE);
        styleHdr.setBorderRight(CellStyle.BORDER_NONE);
        styleHdr.setBorderBottom(CellStyle.BORDER_THIN);
        styleHdr.setBorderTop(CellStyle.BORDER_NONE);
        styleHdr.setFont(font);
        styleHdr.setFillBackgroundColor(new HSSFColor.WHITE().getIndex());
Run Code Online (Sandbox Code Playgroud)

styleHeader的背景颜色为灰色,但是

styleHdr.setFillBackgroundColor(new HSSFColor.WHITE().getIndex());
Run Code Online (Sandbox Code Playgroud)

没有效果.其实我想删除backgroundColor而不是将其设置为白色.这也有可能吗?

谢谢你的建议!

rge*_*man 6

在考虑Apache POI中的"背景颜色"和"前景颜色"时,这有点令人困惑,因为有两种颜色可以应用于单元格背景,使用图案设置样式.在这种情况下,前景色已指定为灰色,填充图案已指定为"实心前景".其他填充图案使用两种颜色.

在这种情况下,如果你想避免设置背景颜色为白色,但你要删除的背景颜色,那么你需要设置填充图案为"无填充"有setFillPattern,使用的CellStyle常量NO_FILL来指定,应该有没有图案应用.然后将忽略任何前景色和背景色.

styleHdr.setFillPattern(CellStyle.NO_FILL);
Run Code Online (Sandbox Code Playgroud)

还要确保将单元格样式应用于所需的单元格setCellStyle.