首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过apache poi在excel中设置字体颜色rgb

如何通过apache poi在excel中设置字体颜色rgb
EN

Stack Overflow用户
提问于 2020-04-27 22:29:54
回答 1查看 3.3K关注 0票数 2

我想在我的项目中设置字体颜色,但我不能使用RGB代码。我现在使用这个代码,但我需要使用RGB代码。

代码语言:javascript
运行
复制
    Workbook wb = new HSSFWorkbook();  
    Sheet sheet = wb.createSheet("Sheet");  
    CreationHelper helper3 = wb.getCreationHelper();
    Font font = wb.createFont();
    font.setColor(IndexedColors.BLUE.getIndex());

如何使用RGB代码设置字体颜色?我看了一些问题,但我没有做到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-27 23:08:33

可以使用XSSFColor设置字体颜色,使用XSSF。并且可以从自定义的RGB值创建XSSFColor

但由于您正在使用HSSF,这是不可能的。在HSSF中,颜色始终需要是调色板颜色。因此,如果需要自定义颜色,则需要覆盖其他HSSFPalette颜色之一。

完整的例子,这两个工作,XSSF als和HSSF。对于HSSF,它用RGB 222、111、222覆盖HSSFColor.HSSFColorPredefined.LIME

代码语言:javascript
运行
复制
import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;

public class CreateExcelFontCustomColor {

 public static void main(String[] args) throws Exception {

  byte[] rgb = new byte[]{(byte)222, (byte)111, (byte)222};

  Workbook workbook = new HSSFWorkbook(); String filePath = "./Excel.xls";
  //Workbook workbook = new XSSFWorkbook(); String filePath = "./Excel.xlsx";

  Font font = workbook.createFont();
  if (font instanceof XSSFFont) {
   XSSFFont xssfFont = (XSSFFont)font;
   xssfFont.setColor(new XSSFColor(rgb, null));
  } else if (font instanceof HSSFFont) {
   font.setColor(HSSFColor.HSSFColorPredefined.LIME.getIndex());
   HSSFWorkbook hssfworkbook = (HSSFWorkbook)workbook;
   HSSFPalette palette = hssfworkbook.getCustomPalette();
   palette.setColorAtIndex(HSSFColor.HSSFColorPredefined.LIME.getIndex(), rgb[0], rgb[1], rgb[2]);
  }
  font.setFontHeightInPoints((short)30);
  font.setBold(true);

  CellStyle cellStyle = workbook.createCellStyle();
  cellStyle.setFont(font);

  Sheet sheet = workbook.createSheet();
  Cell cell = sheet.createRow(0).createCell(0);
  cell.setCellStyle(cellStyle);
  cell.setCellValue("test");

  FileOutputStream out = new FileOutputStream(filePath);
  workbook.write(out);
  out.close();
  workbook.close();

 }

}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61461184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档