尝试使用 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(new XSSFColor(PEAK_ORANGE));
这工作正常,没有异常(exception)。
还有其他人遇到过这种情况吗?我在设置字体颜色的调用中遗漏了一些内容吗?我更喜欢使用我的颜色而不是 IndexedColors 类中的颜色。
最佳答案
这看起来像是 Apache POI 中的一个小错误,一个简单的解决方法是首先设置索引颜色,然后设置实际预期的全色,即
fontFmt.setFontColorIndex((short)1);
fontFmt.setFontColor(new XSSFColor(PEAK_ORANGE));
setFontColorIndex()
将初始化内部结构,以便 setFontColor()
正常工作。
仅供引用,该错误应在 Apache POI 4.0 版本中及时修复。
关于java - 使用 POI FontFormatting setFontColor 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47232915/