2016-05-03 7 views
3

Ich versuche unterEinstellung RGB-Farben mit XSSFColor

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); 

einen RGB-Farbwert mit XSSFColorsetFillForeground() Methode einstellen ich das Bestehen der kurzen Wert aber mein Vordergrund auf Schwarz gesetzt egal ist immer, was die RGB Wert. Ich habe noch nicht herausgefunden, warum das so ist - irgendwelche Ideen?

Antwort

6

Die getIndexed() method in XSSFColor hat Javadocs, die angeben, dass es für Abwärtskompatibilität ist. Grundsätzlich hat XSSF keine Paletten, daher ist es nutzlos, einen Farbindex in einem CellStyle zu setzen.

Allerdings hat XSSF eine eigene Methode zum Festlegen der Vordergrundfarbe in einem Stil - mit den Farben direkt. Verwenden Sie die overload of setFillBackgroundColor that directly takes a XSSFColor. Es existiert nur in XSSFCellStyle, nicht die Schnittstelle CellStyle, also werfen Sie es als XSSFCellStyle zuerst.

((XSSFCellStyle) style).setFillForegroundColor(color); 
+0

Dies funktionierte wie ein Charme. Vielen Dank, und für die Erklärung –

+0

Schöne, vielen Dank! Funktioniert wie erwartet. – pixelstuermer