如何使用POI为XSSFCell设置自定义颜色?CellStyle不生效问题
解决Apache POI设置自定义纯色单元格样式无效的问题
你的问题出在使用了通用的CellStyle接口来设置XSSF的自定义颜色。在POI 5.x版本中,通用CellStyle的setFillForegroundColor(XSSFColor)方法无法正确将自定义RGB颜色写入xlsx文件,必须使用XSSFCellStyle的专属方法来处理。
正确代码实现
// 创建自定义RGB颜色,第二个参数传null表示不依赖索引颜色 XSSFColor color = new XSSFColor(new byte[]{(byte) 60, (byte) 120, (byte) 216}, null); // 明确创建并使用XSSFCellStyle XSSFCellStyle style = (XSSFCellStyle) workBook.createCellStyle(); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 使用XSSFCellStyle的专属方法传入自定义颜色 style.setFillForegroundColor(color); XSSFCell cell = createCell(row, CellType.STRING, style, cellIndex);
关键说明
- 必须用
XSSFCellStyle替代通用CellStyle:XSSF格式的Excel对样式存储逻辑和HSSF不同,通用接口无法正确解析自定义RGB颜色的写入规则。 SOLID_FOREGROUND本身是正确的纯色填充模式,之前无效是因为颜色未被正确写入样式结构。- 确认
createCell方法没有在内部覆盖你设置好的样式,确保样式能正确绑定到目标单元格。
内容的提问来源于stack exchange,提问作者carlspring
相关产品推荐
相关产品推荐

