gpt4 book ai didi

java - APACHE POI 从 Java 中的 Excel 获取精确的字体颜色

转载 作者:行者123 更新时间:2023-12-01 19:03:02 27 4
gpt4 key购买 nike

在 Excel 工作表中,如何使用 Java 中的 Apache POI 获取准确的字体颜色值。我尝试使用

获取字体颜色

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

但它没有给出确切的颜色索引。获得此颜色值后,我必须在 PDFtable 中应用相同的颜色。在这里,我通过读取每个 Excel 单元格格式并使用 iText 中的 pdf 创建相同的格式来进行 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 值在 iText 中创建 BaseColor 对象。

更新:

有几个与在 XSSF 中提取颜色(对于 .xlsx 文件)相关的 Apache POI 错误:

#51222

#51236

#52079

#53274

当 XSSF 处理主题颜色时,这些错误就会出现。

关于java - APACHE POI 从 Java 中的 Excel 获取精确的字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11501434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com