您需要从 Excel 字体颜色中获取 RGB 值。您可以通过几个步骤获得这些值。
要获取合适的 POIColor
对象,您需要沿着 HSSF 或 XSSF 路径,提取合适的 HSSFColor 或 XSSFColor,然后从颜色中获取 RGB 值。
int red = 0;
int green = 0;
int blue = 0;
if (font instanceof HSSFont)
{
HSSFColor color = ((HSSFFont) font).getHSSFColor(hssfWorkbook);
// 0: red, 1: green, 2: blue
short[] rgb = color.getTriplet();
red = rgb[0];
green = rgb[1];
blue = rgb[2];
}
else if (font instanceof XSSFFont)
{
XSSFColor color = ((XSSFFont) font).getXSSFColor();
byte[] rgb = color.getRgb();
// Bytes are signed, so values of 128+ are negative!
// 0: red, 1: green, 2: blue
red = (rgb[0] < 0) ? (rgb[0] + 256) : rgb[0];
green = (rgb[1] < 0) ? (rgb[1] + 256) : rgb[1];
blue = (rgb[2] < 0) ? (rgb[2] + 256) : rgb[2];
}
// Use the rgb values here.
BaseColor
然后您可以使用 rgb 值在 iText中创建您的对象。
更新:
有几个与在 XSSF 中提取颜色相关的 Apache POI 错误(对于 .xlsx 文件):
#51222
#51236
#52079
#53274
当 XSSF 处理主题颜色时会出现这些错误。