You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache POI 5.2.3中HSSFWorkbook单元格背景色设置问题

Apache POI 5.2.3 HSSFWorkbook 用十六进制颜色设置单元格背景色

在HSSFWorkbook(.xls格式)中,单元格颜色依赖内置调色板,无法直接像XSSF那样传入RGB值。要使用十六进制颜色,需先将其转换为RGB,再通过调色板关联到颜色索引,具体实现如下:

步骤1:十六进制转RGB

先把十六进制颜色码转换为RGB数值,比如C0C0C0对应RGB(192,192,192),可以用工具方法实现转换:

private static int[] hexToRgb(String hexColor) {
    // 移除可能存在的#前缀
    String cleanHex = hexColor.replace("#", "");
    int red = Integer.parseInt(cleanHex.substring(0, 2), 16);
    int green = Integer.parseInt(cleanHex.substring(2, 4), 16);
    int blue = Integer.parseInt(cleanHex.substring(4, 6), 16);
    return new int[]{red, green, blue};
}

步骤2:通过调色板关联颜色索引

HSSF的调色板有56个颜色索引(0-55),其中0-7是系统默认颜色,建议从索引8开始替换未使用的颜色,避免影响默认样式,可通过两种方式处理:

方式一:查找调色板中已有的相似颜色

使用findSimilarColor方法匹配最接近的颜色,直接复用其索引:

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Demo");
HSSFCell cell = sheet.createRow(0).createCell(0);
cell.setCellValue("自定义背景色");

// 十六进制颜色转换为RGB
int[] rgb = hexToRgb("C0C0C0");

// 获取调色板
HSSFPalette palette = workbook.getCustomPalette();
// 查找相似颜色
HSSFColor targetColor = palette.findSimilarColor(rgb[0], rgb[1], rgb[2]);

方式二:强制替换调色板索引

如果找不到匹配的相似颜色,或者需要精确颜色,可以直接替换一个调色板索引:

// 替换索引8(可选择其他未使用的索引,范围8-55)
palette.setColorAtIndex((short)8, (byte)rgb[0], (byte)rgb[1], (byte)rgb[2]);
HSSFColor targetColor = palette.getColor((short)8);

步骤3:设置单元格样式并应用

创建单元格样式,设置填充颜色和填充模式,最后应用到单元格:

HSSFCellStyle cellStyle = workbook.createCellStyle();
// 设置前景填充色(HSSF中背景色通过前景填充色设置)
cellStyle.setFillForegroundColor(targetColor.getIndex());
// 必须设置填充模式为实心,否则颜色不显示
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

// 应用样式到单元格
cell.setCellStyle(cellStyle);

// 写入文件
try (FileOutputStream fos = new FileOutputStream("custom-color.xls")) {
    workbook.write(fos);
} catch (IOException e) {
    e.printStackTrace();
}

注意事项

  • HSSF调色板最多支持56种颜色,若需要多个自定义颜色,需依次替换不同的未使用索引;
  • 0-7为系统默认颜色,修改可能导致其他依赖默认颜色的样式异常;
  • 必须设置FillPatternType.SOLID_FOREGROUND,否则背景色不会生效。

内容的提问来源于stack exchange,提问作者Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:37:43