Thanks for the code snipplet. Another difference seems to be that you keep a map to find your named colors, while I use the index. I'll try the named colors approach.
Claus -----Ursprüngliche Nachricht----- Von: Tom Schindl [mailto:[EMAIL PROTECTED] Gesendet: Donnerstag, 26. Januar 2006 13:00 An: Claus Luethje; POI Users List Betreff: Re: AW: AW: Excel colors Please always keep the list CC. Well there are 2 differences between us: - I create the palette from the workbook - I'm replacing colors while you are adding them to the Palette and my code looks like the following: ---------------------8<-------------------- HSSFWorkbook workbook = new HSSFWorkbook(); HSSFPalette p = workbook.getCustomPalette(); HashMap<String,Short> map = new HashMap<String,Short>(); short i = 10; p.setColorAtIndex( ++i, (byte)255, (byte)0, (byte)0 ); map.put( "myRed", i ); p.setColorAtIndex( ++i, (byte)255, (byte)255, (byte)0 ); map.put( "myYellow", i ); HSSFStyle style = workbook.createStyle(); style.setFillForegroundColor( map.get("myRed") ); style.setFillPattern( HSSFCellStyle.SOLID_FOREGROUND ); HSSFRow row = workbook.createRow((short)0); cell = row.createCell((short)0); cell.setCellStyle(style); ---------------------8<-------------------- Tom Claus Luethje wrote: > Tom, > I changed setBackgroundColor() to setForegroundColor(), that led to different > colors (but still black and white). > HSSFStyle seems not to be defined. I just have HSSFCellStyle. > Is the order the setForeground() and setFillPattern() relevant? > > Claus > > -----Ursprüngliche Nachricht----- > Von: Tom Schindl [mailto:[EMAIL PROTECTED] > Gesendet: Donnerstag, 26. Januar 2006 12:37 > An: POI Users List; Claus Luethje > Betreff: Re: AW: Excel colors > > Ok and here's the 'fault', This should be better documented in the API-Docs > and examples found on the poi-page: > > ------------8<------------ > style.setForegroundColor( evenRowColor.getIndex() ); > style.setFillPattern( HSSFStyle.SOLID_FOREGROUND ); > ------------8<------------ > > And you are done ;-) > > Tom > > > Claus Luethje wrote: > >>Of course. It's a little complicated to extract the relevant lines of code, >>because it's part of a framework. But I'll try: >> >>private HSSFColor evenRowColor; >>//... >> >>public XLSTablePartFormatter(final TableFormatDefinition tfd) { >> //... >> evenRowColor = getColor(tfd.getEvenRowColor()); } >> >>public HSSFCellStyle getTextCellStyleBright(HSSFCellStyle cellStyle) { >> cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); >> cellStyle = getTextCellStyle(cellStyle); >> cellStyle.setFillBackgroundColor(evenRowColor.getIndex()); >> return cellStyle; >>} >>//... >> >>protected HSSFCellStyle getTextCellStyle(HSSFCellStyle cellStyle) { >> cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); >> cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); >> cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); >> cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); >> cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); >> return cellStyle; >>} >> >>This class formats data in XLS style according to a table definition. The >>method 'tfd.getEvenRowColor()' returns the HSSFColor - as converted by the >>getColor(final Color col) method from my first mail. >> >>Claus >> >>-----Ursprüngliche Nachricht----- >>Von: Tom Schindl [mailto:[EMAIL PROTECTED] >>Gesendet: Donnerstag, 26. Januar 2006 11:30 >>An: POI Users List >>Betreff: Re: Excel colors >> >>Could you post the code how you are setting the background color on a cell? >> >>Tom >> >>Claus Luethje wrote: >> >> >>>Hi, >>>I build an excel sheet with colored cells and texts, and it works >>>fine when I use the predefined colors. But when I add colors myself, >>>I get grey scale colors. Do I have to change some settings in the >>>Workbook (or anywhere else)? >>> >>>I set the palette and colors like this: >>> >>>private HSSFPalette palette = new HSSFPalette(new >>>PaletteRecord((short)0x92)){}; >>> >>>protected final HSSFColor getColor(final Color col){ >>> HSSFColor c; >>> c = palette.findColor((byte)col.getRed(), (byte)col.getGreen(), >>>(byte)col.getBlue()); >>> if(c==null){ >>> try{ >>> c = palette.addColor((byte)col.getRed(), >>>(byte)col.getGreen(), (byte)col.getBlue()); >>> } catch (RuntimeException re){ >>> c = palette.findSimilarColor((byte)col.getRed(), >>>(byte)col.getGreen(), (byte)col.getBlue()); >>> } >>> } >>> return c; >>>} >>> >>>Thanks for your help! >>> >>>Regards, >>>Claus >>> >>>--------------------------------------------------------------------- >>>To unsubscribe, e-mail: [EMAIL PROTECTED] >>>Mailing List: http://jakarta.apache.org/site/mail2.html#poi >>>The Apache Jakarta Poi Project: http://jakarta.apache.org/poi/ >>> >>> >> >> >> >>--------------------------------------------------------------------- >>To unsubscribe, e-mail: [EMAIL PROTECTED] >>Mailing List: http://jakarta.apache.org/site/mail2.html#poi >>The Apache Jakarta Poi Project: http://jakarta.apache.org/poi/ >> >> > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] Mailing List: http://jakarta.apache.org/site/mail2.html#poi The Apache Jakarta Poi Project: http://jakarta.apache.org/poi/
