簡體   English   中英

如何通過 apache poi 在 excel 中設置字體顏色 rgb

[英]How to set font color rgb in excel via 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 colors 中總是需要調色板 colors。 因此,如果需要自定義顏色,則需要覆蓋其他HSSFPalette colors 之一。

適用於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();

 }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM