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
相关产品推荐
相关产品推荐

