This looks like a bug in the CellUtil.get/setFormatProperties methods, which assumes the fill foreground color is an indexed color (short data type), and falls back to IndexedColors.AUTOMATIC (black) if not indexed.
Could you open a bug at https://bz.apache.org/bugzilla with your test case, quote the sentence above, and a link to http://apache-poi.1045710.n5.nabble.com/XSSF-Problem-with-CellUtil-and-custom-RGB-background-color-td5722925.html? XSSFCellStyle.java: https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java?revision=1737895&view=markup#l455 @Override public short getFillForegroundColor() { XSSFColor clr = getFillForegroundXSSFColor(); return clr == null ? IndexedColors.AUTOMATIC.getIndex() : clr.getIndexed(); } @Override public XSSFColor getFillForegroundColorColor() { return getFillForegroundXSSFColor(); } https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java?revision=1737895&view=markup#l1027 @Override public void setFillForegroundColor(short fg) { XSSFColor clr = new XSSFColor(); clr.setIndexed(fg); setFillForegroundColor(clr); } public void setFillForegroundColor(XSSFColor color) { CTFill ct = getCTFill(); CTPatternFill ptrn = ct.getPatternFill(); if(color == null) { if(ptrn != null && ptrn.isSetFgColor()) ptrn.unsetFgColor(); } else { if(ptrn == null) ptrn = ct.addNewPatternFill(); ptrn.setFgColor(color.getCTColor()); } addFill(ct); } On Mon, May 2, 2016 at 8:15 AM, Anders Åberg <[email protected]> wrote: > I'm using 3.14. > > -Anders > > On 2 May 2016 at 16:35, Javen O'Neal <[email protected]> wrote: > >> What version of POI are you using? >> On May 2, 2016 03:25, "Anders Åberg" <[email protected]> wrote: >> >> > Hi guys >> > I am trying to set RGB background colors on cells and in addition set >> > borders on regions using RegionUtil. When doing this, all the cells with >> > borders end up completely black. >> > >> > It seems that using XSSFColor on XSSFCellStyle causes problems with the >> way >> > CellUtil.setCellStyleProperties works. CellUtil is used by RegionUtil. >> > >> > This is a minimal test to reproduce the problem: >> > >> > XSSFWorkbook workbook = new XSSFWorkbook(); >> > XSSFSheet sheet = workbook.createSheet(); >> > >> > Cell cell = CellUtil.getCell(CellUtil.getRow(0, sheet), 0); >> > >> > XSSFColor color = new XSSFColor(Color.RED); >> > XSSFCellStyle style = workbook.createCellStyle(); >> > style.setFillForegroundColor(color); >> > style.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); >> > cell.setCellStyle(style); >> > >> > // Everything is fine at this point, cell is red >> > >> > Map<String, Object> properties = new HashMap<>(); >> > properties.put(CellUtil.BORDER_BOTTOM, CellStyle.BORDER_THIN); >> > CellUtil.setCellStyleProperties(cell, properties); >> > >> > // Now the cell is all black >> > >> > Does anybody know if this is supposed to work? Any suggestions on >> > workarounds? It is of course possible to avoid the CellUtil methods, but >> > they contain some clever logic to avoid creating new styles for every >> cell >> > and eventually hit a threshold in Excel. >> > >> > All help will be very appreciated! >> > >> > Thanks, Anders >> > >> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
