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

Apache POI 5.4.1能否自定义字体或单元格样式的RGB颜色?

在Apache POI 5.4.1中使用自定义RGB颜色

当然可以,Apache POI 5.4.1完全支持自定义RGB颜色,不管是单元格填充色还是字体颜色都能实现,以下是针对不同场景的实现示例:

一、自定义单元格填充颜色

你原来的代码用的是预定义索引色,换成自定义RGB色的话,针对XSSF(.xlsx格式)可以直接创建XSSFColor对象来实现,同时注意POI 5.x版本中填充模式常量已迁移到FillPatternType类:

// 初始化工作簿和工作表
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("Sheet1");
XSSFRow rowxl = sheet.createRow(0);

// 创建自定义RGB填充色(对应rgb(244,255,115))
XSSFColor customFillColor = new XSSFColor(new java.awt.Color(244, 255, 115), null);

// 创建单元格样式并配置填充
XSSFCellStyle style = wb.createCellStyle();
style.setFillForegroundColor(customFillColor);
style.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 替代旧版CellStyle.SOLID_FOREGROUND

// 应用样式到单元格
XSSFCell cell = rowxl.createCell(7);
cell.setCellValue(" <<<<ONTRACK>>>>");
cell.setCellStyle(style);

二、自定义字体颜色

如果要给字体设置自定义RGB颜色,步骤类似,只需创建自定义颜色后绑定到字体对象,再将字体关联到样式即可:

// 创建自定义字体颜色(示例:红色rgb(255,0,0))
XSSFColor customFontColor = new XSSFColor(new java.awt.Color(255, 0, 0), null);

// 创建字体并设置颜色等属性
XSSFFont font = wb.createFont();
font.setColor(customFontColor);
font.setFontHeightInPoints((short)12);
font.setBold(true);

// 将字体应用到单元格样式
style.setFont(font); // 可复用之前的CellStyle,也可新建样式

三、针对HSSF(.xls格式)的特殊处理

如果是使用旧版的.xls格式(HSSFWorkbook),自定义颜色需要先添加到工作簿的自定义调色板中,再通过索引引用:

HSSFWorkbook hwb = new HSSFWorkbook();
// 将自定义颜色添加到调色板(索引范围8-63为自定义区域)
hwb.setCustomPaletteColor((short)8, (byte)244, (byte)255, (byte)115);

HSSFCellStyle style = hwb.createCellStyle();
style.setFillForegroundColor((short)8);
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 02:23:19