使用NPOI设置单元格RGB背景色显示为黑色的问题排查
问题原因
你代码导致单元格背景变黑的核心问题是错误使用了自定义XSSFColor的Index属性给样式填充色赋值:
- 手动通过RGB值实例化的自定义
XSSFColor不在工作簿默认索引调色板范围内,此时它的Index属性会返回默认值0,而调色板中索引0对应的颜色就是纯黑色。 FillForegroundColor属性仅支持传入调色板内置的索引色值,自定义RGB颜色无法通过该属性正确生效。- 你代码中
FillPattern = FillPattern.SolidForeground的写法是正确的,不需要修改。
修正方案
移除原来给FillForegroundColor赋值backColor.Index的代码,直接将你创建的自定义颜色实例赋值给样式的FillForegroundColorColor属性即可,修正后的核心代码如下:
ICellStyle style = wb.CreateCellStyle(); var font = (XSSFFont)GetGroupFont(wb); style.SetFont(font); var backColor = new XSSFColor(new byte[] { 198, 224, 180 }); // 自定义RGB颜色直接赋值给FillForegroundColorColor属性,不需要取Index style.FillForegroundColorColor = backColor; style.FillPattern = FillPattern.SolidForeground; style.Alignment = HorizontalAlignment.Left; style.VerticalAlignment = VerticalAlignment.Center; ICell cellGroup = row.CreateCell(0); cellGroup.CellStyle = style; cellGroup.SetCellValue(value);
补充说明:如果你操作的是
.xls格式的HSSFWorkbook,自定义颜色需要先加入工作簿调色板再取索引赋值;但你当前代码使用的是XSSF体系(对应.xlsx格式),直接给FillForegroundColorColor赋值颜色实例即可正常显示你需要的浅绿色。
内容的提问来源于stack exchange,提问作者jstuardo
相关产品推荐
相关产品推荐

