【问题标题】:Apache POI: Indexed Color from AWT Color inputApache POI:来自 AWT 颜色输入的索引颜色
【发布时间】:2019-04-25 08:52:22
【问题描述】:

我正在尝试在使用 apache POI 创建的 Excel 文件中复制给定 java.awt.Color 和 java.awt.Font 的字体和颜色。后者有效,但设置颜色不起作用:虽然我在 Excel 中的字体在使用IndexedColors.GREEN.getIndex() 直接设置时为绿色,但使用java.awt.Color 创建XSSFColor 不起作用(请参见下面的代码)。如何在我的 POI 字体中获得(最接近的)IndexedColor 或更好地使用 java.awt.Color 的原始值?

当前代码sn-p:

            Font font = workbook.createFont();
            //font.setColor(IndexedColors.GREEN.getIndex());  //Works
            font.setColor(new XSSFColor(java.awt.Color.GREEN).getIndex()); //Does not work

            font.setFontName(getFont(i,j).getFamily());
            font.setFontHeightInPoints((short)getFont(i,j).getSize());
            font.setItalic(getFont(i,j).isItalic());
            font.setBold(getFont(i,j).isBold());

(Apache POI 3.17)

【问题讨论】:

  • 你试过 font.setColor(new XSSFColor(java.awt.Color.GREEN)) 吗?
  • 刚刚检查确定,Font.setFont 需要一个 short 值(-> 如果我尝试这种方式会出错)。
  • XSSFWorkbook#createFont 返回 XSSFFont(Font 的实现)并且此 XSSFFont 类有一个 setColor(XSSFColor) 方法。
  • 谢谢!出于某种原因,我的 javadoc 为 org.apache.poi.ss.usermodel.Font 显示“所有已知的实现类:HSSFFont”。但是 XSSFFont 也实现了它,它就像你说的那样工作。如果您想将此作为答案,我当然会接受。

标签: java colors apache-poi awt


【解决方案1】:

XSSFWorkbook#createFont 返回 XSSFFont(Font 的实现)并且此 XSSFFont 类有一个 setColor(XSSFColor) 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2014-04-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多