APACHE POI得到确切的字体颜色从Excel中的Java(APACHE POI getting

2019-07-30 10:56发布

在excel表格中如何让在Java中使用Apache POI的确切字体颜色值。 我试图通过使用获得的字体颜色

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

但它没有给确切的显色指数。 得到这个颜色值后,我不得不申请在PDFtable相同的颜色。 在这里,我通过阅读每个Excel单元格的格式,并创建使用PDF的iText中做同样将Excel转换为PDF。

请帮我!!

提前致谢。

Answer 1:

您需要从Excel的字体颜色获得RGB值。 您可以在几个步骤获取这些值。

为了得到适当的POI Color对象,需要下井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.

然后你可以使用RGB值来创建BaseColor在iText的对象。

更新:

有相关的申请,以提取颜色XSSF(为的.xlsx文件)几个Apache POI的错误:

#51222

#51236

#52079

#53274

这些错误出现时XSSF正在处理的主题颜色。



文章来源: APACHE POI getting exact font color from excel in Java