POI删除单元格的背景颜色

时间:2014-08-08 15:17:44

标签: 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());

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

styleHdr.setFillBackgroundColor(new HSSFColor.WHITE().getIndex());

无效。其实我想删除backgroundColor而不是将其设置为白色。这也可能吗?

Thx for your advice!

1 个答案:

答案 0 :(得分:5)

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

在这种情况下,如果您想避免将背景颜色设置为白色,但确实要删除背景颜色,则需要使用setFillPattern将填充图案设置为“无填充”,使用the CellStyle constant NO_FILL指定不应该应用模式。然后将忽略任何前景色和背景色。

styleHdr.setFillPattern(CellStyle.NO_FILL);

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