如何在Apache POI中为合并的单元格设置背景色

时间:2018-09-18 15:03:28

标签: java excel apache-poi

enter image description here

我使用以下代码设置单元格的背景色:

XSSFCellStyle cellStyle = (XSSFCellStyle) excelStyle.getCellStyle();
cellStyle.setFillForegroundColor(new XSSFColor(java.awt.Color.decode("#FFFF99")));
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

但是它不适用于合并的单元格,无论我尝试设置什么,它总是变黑。 仅当我设置如下预定义颜色时,它才有效:

cellStyle.setFillForegroundColor(IndexedColors.CORAL.index);

颜色由用户定义,所以我不能使用IndexedColors。另外,我无法创建自定义调色板颜色(如here所述,因为我的工作簿的类型为SXSSFWorkbook,而不是HSSFWorkbook

如何设置合并单元格的背景颜色?

1 个答案:

答案 0 :(得分:0)

我已尝试以下步骤并为我工作。

  1. 创建工作表
  2. 创建一行
  3. 使用 RGB 值创建具有自定义颜色的样式
  4. 用于创建单元格的循环> 创建单元格并将值添加到将出现在后续合并单元格的单元格 0 中,将样式应用于每个单元格,
  5. 最后合并单元格 > 假设您想使用 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
  6. 将单元格 0 合并到第 0 行的单元格 3

经过大量调试后,我发现导致合并单元格始终为黑色的问题在行下方。

CellUtil.setAlignment(sheetSummary.getRow(0).getCell(4), HorizontalAlignment.CENTER_SELECTION);