使用XSSFColor设置RGB颜色

Kur*_*usu 5 java apache-poi

我正在尝试使用下面的XSSFColor setFillForeground()方法设置RGB颜色值

XSSFWorkbook workbook= new XSSFWorkbook();
CellStyle style = workbook.createCellStyle();
Style.cloneStyleFrom(headerStyle);
Style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
XSSFColor color = new XSSFColor(new java.awt.Color(215,228,188)); //accepts a short value
style.setFillForegroundColor(color .getIndexed());

Sheet sheet = workbook.createSheet(sheetName);
Row headerRow = sheet.createRow(0);

Cell cell = headerRow.createCell(i);
cell.setCellStyle(style);
Run Code Online (Sandbox Code Playgroud)

我传递的是短值,但无论RGB值是多少,我的前景都会变为黑色.我还没有发现为什么这是 - 任何想法?

rge*_*man 9

getIndexed()方法XSSFColor具有Javadocs,表明它是为了向后兼容.基本上,XSSF没有调色板,因此设置颜色索引是没用的CellStyle.

但是,XSSF有自己的方法来设置样式中的前景色 - 直接使用颜色.使用直接占用重载setFillBackgroundColorXSSFColor.它只存在于XSSFCellStyle界面中,而不是界面中CellStyle,因此将其作为XSSFCellStyle第一个投射.

((XSSFCellStyle) style).setFillForegroundColor(color);
Run Code Online (Sandbox Code Playgroud)