Reputation: 372
To apply a custom color for an XSSFWorkbook in Apache POI 3.7 and below the following was possible:
java.awt.Color c = new java.awt.Color (1,2,3)
XSSFCellStyle xcs = xssfWorkbook.createCellStyle();
XSSFFont headerFont = xssfWorkbook.createFont();
headerFont.setColor(new XSSFColor(c));
xcs.setFont(headerFont);
cell.setCellStyle(xcs);
In version 4.0 XSSFColor(java.awt.Color) got removed. It is still possible to achieve the same, just with additional 'hackery':
XSSFColor xc = new XSSFColor();
xc.setARGBHex(String.format("%02x%02x%02x",c.getRed(),c.getGreen(),c.getBlue()));
headerFont.setColor(xc);
But what is the 'proper' way to do this? Most of the XSSFColor methods involve an IndexedColorMap but I could not find any example for how this could be used for setting custom colors in an XSSFWorkbook.
Upvotes: 7
Views: 11595
Reputation: 31
XSSFFont font = workbook.createFont();
byte[] rgb = {20, (byte) 230, 25};
XSSFColor xc = new XSSFColor(rgb, null);
font.setColor(xc);
Above should be the best way for POI4.*.
Upvotes: 2
Reputation: 456
byte[] rgb = {120, 100, (byte) 200};
headerFont.setColor(new XSSFColor(rgb, new DefaultIndexedColorMap()));
Upvotes: 11