我尝试使用下面的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);
我传递短值,但无论RGB值是多少,我的前景都会变为黑色。我还没有发现为什么会这样 - 有什么想法吗?
答案 0 :(得分:9)
getIndexed()
method in XSSFColor
有Javadocs声明它是向后兼容性的。基本上,XSSF没有调色板,所以在CellStyle
中设置颜色索引是没用的。
但是,XSSF有自己的方法来设置样式中的前景色 - 直接使用颜色。使用overload of setFillBackgroundColor
that directly takes a XSSFColor
。它仅存在于XSSFCellStyle
中,而不是接口CellStyle
中,因此首先将其转换为XSSFCellStyle
。
((XSSFCellStyle) style).setFillForegroundColor(color);
答案 1 :(得分:0)
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFRow row = sheet.createRow(0);
XSSFCell cell = row.createCell( 0);
cell.setCellValue("custom XSSF colors");
XSSFCellStyle style1 = wb.createCellStyle();
style1.setFillForegroundColor(new XSSFColor(new java.awt.Color(128, 0, 128), new DefaultIndexedColorMap()));
style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);