首页 > 解决方案 > CellStyle 类型中的方法 setFillForegroundColor(short) 不适用于参数 (XSSFColor)

问题描述

我试图让自定义颜色在 Apache POI 中工作,但我遇到了一个小问题。到目前为止,我一直在使用IndexedColors,但作为调色板,它非常单调。因此,使用 RGB 格式进行颜色选择将帮助我使我的电子表格看起来更好。

我一直在使用这个问题的答案,因为它从理论上解决了我的问题。但是,我面临一个非常愚蠢的问题,我真的不知道如何解决。

我收到的错误是:

CellStyle 类型中的方法 setFillForegroundColor(short) 不适用于参数 (XSSFColor)

这不应该真的发生,因为我已经看到它被用于许多其他关于 Apache POI 的示例和文档中。IDE(Eclipse)建议更改setFillForegroundColorsetFillBackgroundColor但这样做,只会使该想法建议反之亦然作为解决方案。我的 IDE 可以是什么小丑...

Map为我的风格创建了一个,这可能会以某种方式使所有事情复杂化,但我并不认为这是问题所在。或者可以吗?

我能做些什么来解决这个废话?


代码摘录:

private static Map<String, CellStyle> styling(Workbook wb)
{
    Map<String, CellStyle> styles = new HashMap<>();
    CellStyle style;

    Font font1 = wb.createFont();
    font1.setBold(true);

    style = createBorderedStyle(wb);
    style.setAlignment(HorizontalAlignment.RIGHT);
    style.setFont(font1);
    style.setFillBackgroundColor(new XSSFColor(new java.awt.Color(255, 255, 0), new DefaultIndexedColorMap()));
    style.setFillPattern(FillPatternType.SOLID_FOREGROUND); 
    styles.put("column_headers", style);

    return styles;
}

一些视觉喜剧

设置填充背景颜色

setFillForegroundColor

标签: javaapache-poiapache-poi-4

解决方案


感谢Axel Richter,我解决了这个问题。问题是我应该坚持使用 XSSF 库。

private static Map<String, CellStyle> styling(Workbook wb)
{
  Map<String, CellStyle> styles = new HashMap<>();
  XSSFCellStyle style;

  Font font1 = wb.createFont();
  font1.setBold(true);
  style = (XSSFCellStyle) createBorderedStyle(wb);
  style.setAlignment(HorizontalAlignment.RIGHT);
  style.setFont(font1);
  style.setFillForegroundColor(new XSSFColor(new java.awt.Color(128, 0, 128), new DefaultIndexedColorMap()));
  style.setFillPattern(FillPatternType.SOLID_FOREGROUND); 
  styles.put("cell_g", style);

  return styles; 
}

推荐阅读