我想在我的项目中设置字体颜色,但我无法使用 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
颜色之一。
适用于 XSSF
和 HSSF
的完整示例。对于 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/