2017-11-10 23 views
1

POI条件付き書式を使用しようとしています。私は境界例外外のインデックスを取得setFontColor()方法を使用する場合POI FontFormattingを使用した場合の例外setFontColor

private final static Color PEAK_ORANGE = new Color(255, 239, 221); 

public ConditionalFormattingRule getConditionalFormatting(ConditionalFormattingRule formattingContainer, FormatSpecs format){ 

    FontFormatting fontFmt = formattingContainer.createFontFormatting(); 
    fontFmt.setFontStyle(true, false); 
    // fontFmt.setFontColorIndex((short)11); 
    fontFmt.setFontColor(new XSSFColor(PEAK_ORANGE)); 

    PatternFormatting patternFmt = formattingContainer.createPatternFormatting(); 
    patternFmt.setFillBackgroundColor(new XSSFColor(PEAK_ORANGE)); 
    return formattingContainer; 
} 

:私は、次のような方法があります。私はいくつかの任意のインデックス値を使用してsetFontColorIndex()方法を使用する場合

enter image description here

、私は例外を得ることはありません。通知しかし、私は背景色

patternFmt.setFillBackgroundColor(新しいXSSFColor(PEAK_ORANGE))を設定するためにコールの正確な同じ色の参照を使用すること。

この例外はありません。

誰かがこれに遭遇しましたか?私はフォントの色を設定する呼び出しで何かが不足していますか?私は、IndexedColorsクラスの色ではなく色を使用することを好みます。

答えて

2

これは、Apache POIの小さなバグのように見えますが、簡単な回避策は、最初すなわち

fontFmt.setFontColorIndex((short)1); 
    fontFmt.setFontColor(new XSSFColor(PEAK_ORANGE)); 

setFontColorIndex()は内部構造をその初期化されます、インデックスカラーを設定し、実際の意図したフルカラーを設定することですそのsetFontColor()が動作します。

参考までに、Apache POIのリリース4.0のバグを修正する必要があります。

関連する問題