【发布时间】: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