在excel表格中如何让在Java中使用Apache POI的确切字体颜色值。 我试图通过使用获得的字体颜色
org.apache.poi.ss.usermodel.Font F = book.getFontAt(style.getFontIndex()); 短clrIdx = f.getColor();
但它没有给确切的显色指数。 得到这个颜色值后,我不得不申请在PDFtable相同的颜色。 在这里,我通过阅读每个Excel单元格的格式,并创建使用PDF的iText中做同样将Excel转换为PDF。
请帮我!!
提前致谢。
您需要从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正在处理的主题颜色。