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.

次に、rgb 値を使用してBaseColor、iText でオブジェクトを作成できます。

アップデート:

XSSF (.xlsx ファイルの場合) での色の抽出に関連して、いくつかの Apache POI バグが報告されています。

#51222

#51236

#52079

#53274

これらのバグは、XSSF がテーマの色を処理しているときに発生します。

于 2013-01-15T21:40:40.693 に答える