Apache POI setFillBackgroundColor设置单元格背景色不生效问题咨询
解决Apache POI设置单元格背景色不生效的问题
这个问题我之前也踩过坑!你用setFillBackgroundColor其实没找对正确的用法——在Apache POI的CellStyle里,这个方法是用来设置填充图案的背景色(比如用网格图案时,线条间隙的颜色),不是用来设置单元格的纯色背景的。
要让单元格显示红色背景,你需要两步操作:
- 设置填充前景色为目标颜色
- 指定填充模式为纯色覆盖
直接给你修改后的代码:
Workbook workbook = new HSSFWorkbook(); Sheet worksheet = workbook.createSheet("test sheet"); Row row1 = worksheet.createRow(0); Cell cell0 = row1.createCell(0); CellStyle testStyle = workbook.createCellStyle(); // 1. 设置填充前景色为红色(这才是单元格的纯色背景色) testStyle.setFillForegroundColor(IndexedColors.RED.getIndex()); // 2. 设置填充模式为纯色前景,让颜色覆盖整个单元格 // POI 4.x+ 用枚举类,旧版本(3.x)可以用HSSFCellStyle.SOLID_FOREGROUND常量 testStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); cell0.setCellStyle(testStyle);
简单解释下:POI的填充逻辑里,SOLID_FOREGROUND模式会让前景色完全覆盖单元格,这时候前景色就等同于我们认知里的“单元格背景色”,而背景色只在非纯色填充时才会生效。
内容的提问来源于stack exchange,提问作者Yiour
相关产品推荐
相关产品推荐

