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

标签 java excel apache-poi

我想在我的项目中设置字体颜色,但我无法使用 RGB 代码来实现。我现在正在使用此代码,但我需要使用 RGB 代码。

    Workbook wb = new HSSFWorkbook();  
    Sheet sheet = wb.createSheet("Sheet");  
    CreationHelper helper3 = wb.getCreationHelper();
    Font font = wb.createFont();
    font.setColor(IndexedColors.BLUE.getIndex());

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

最佳答案

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

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

适用于 XSSFHSSF 的完整示例。对于 HSSF,它会用 RGB 222、111、222 覆盖 HSSFColor.HSSFColorPredefined.LIME

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();

 }

}

关于java - 如何通过apache poi在excel中设置字体颜色rgb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61461184/

相关文章:

Java Google App Engine 批量加载器上传错误 “OverflowError: date value out of range”

java - 在 tomcat webapp 中引用可变的外部 web 服务 url

java - 如何让聊天程序服务器向所有连接的java客户端发送消息

java - 无法在 Excel 工作表中使用 POI 为空值插入数据

java - 如何读取Excel单元格值中的下拉列表项?

java - 如何使用 Apache POI 进行列跨度来解析 XLS?

java - 无法滚动 Primefaces 分层菜单的 DIV

python - Openpyxl:迭代单元格范围

javascript - 使用 Google Sheets API (v4) 格式化单元格

vba - 有没有一种简单的方法可以在 vba 中选择多个条件?