Java 使用POI FontFormatting setFontColor时出现异常

Java 使用POI FontFormatting setFontColor时出现异常,java,apache-poi,Java,Apache Poi,正在尝试使用POI条件格式。我有以下方法: private final static Color PEAK_ORANGE = new Color(255, 239, 221); public ConditionalFormattingRule getConditionalFormatting(ConditionalFormattingRule formattingContainer, FormatSpecs format){ FontFormatting fontFmt = form

正在尝试使用POI条件格式。我有以下方法:

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;
}
当我使用
setFontColor()
方法时,我会得到索引越界异常

当我使用一些任意索引值使用
setFontColorIndex()
方法时,我不会得到异常。但是请注意,我在调用中使用了完全相同的颜色引用来设置背景色

patternFmt.setFillBackgroundColor(新XSSFColor(PEAK_橙色))

这很好,没有例外


还有其他人碰到过这个吗?我在设置字体颜色的调用中是否遗漏了什么?我更喜欢使用我的颜色,而不是IndexedColors类中的颜色。

这看起来像Apache POI中的一个小错误,一个简单的解决方法是首先设置索引颜色,然后设置实际的预期全色,即

    fontFmt.setFontColorIndex((short)1);
    fontFmt.setFontColor(new XSSFColor(PEAK_ORANGE));
setFontColorIndex()
将初始化内部结构,以便
setFontColor()
可以工作

仅供参考,Apache POI 4.0版应及时修复该漏洞