0

在 Excel 工作表中,如何使用 Java 中的 Apache POI 获取确切的字体颜色值。我试图通过使用来获取字体颜色

org.apache.poi.ss.usermodel.Font f = book.getFontAt(style.getFontIndex()); 短 clrIdx = f.getColor();

但它没有给出确切的颜色索引。获得此颜色值后,我必须在 PDFtable 中应用相同的颜色。在这里,我通过读取每个 excel 单元格格式并在 iText 中使用 pdf 创建相同的格式来进行 excel 到 pdf 的转换。

请帮我!!

提前致谢。

4

1 回答 1

4

您需要从 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 处理主题颜色时会出现这些错误。

于 2013-01-15T21:40:40.693 回答