java - POI 删除单元格的背景颜色

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

没有效果。实际上我想删除背景颜色而不是将其设置为白色。这也可以吗?

感谢您的建议!

最佳答案

在 Apache POI 中考虑“背景颜色”和“前景色”时,这有点令人困惑,因为有两种颜色可以应用于单元格背景,并使用图案进行样式化。在本例中,前景色已指定为灰色,填充图案已指定为“纯色前景色”。其他填充图案使用两种颜色。

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

styleHdr.setFillPattern(CellStyle.NO_FILL);

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

关于java - POI 删除单元格的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25206765/

相关文章:

java - 如何以编程方式从我的 Java 应用程序中获取内存、线程和 CPU 使用情况?

java - JAXB/MOXy : Do not call XmlElementWrapper setter when element missing?

excel - 使用 VBA 打开和修复多个 excel 文件

excel - workbooks.connections.add2 给出运行时错误 5 : Invalid procedure call or argument

java - POI - 处理 HH :MM:SS. sss 格式的数据

Java - 查找连续元素的最长递增序列的程序(逻辑错误)

java - 检查 Struts 状态运行时

excel - 将字符串附加到 VBA 中的粗体字符串

Java - 如何通过HTTP请求而不是文件读取xls格式数据

apache-poi - MS Word 中的 Apache POI 页脚问题