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.
次に、rgb 値を使用してBaseColor
、iText でオブジェクトを作成できます。
アップデート:
XSSF (.xlsx ファイルの場合) での色の抽出に関連して、いくつかの Apache POI バグが報告されています。
#51222
#51236
#52079
#53274
これらのバグは、XSSF がテーマの色を処理しているときに発生します。