I rewrote parts of the framework to handle color names and it works. I'm not really happy with the use of color indexes (sp?), because it's limiting. But, that doesn't matter ATM. I'll think of a dynamic approach later! Thanks for your help, Tom!
Regards, Claus -----Ursprüngliche Nachricht----- Von: Tom Schindl [mailto:[EMAIL PROTECTED] Gesendet: Donnerstag, 26. Januar 2006 13:10 An: POI Users List Betreff: Re: AW: AW: AW: Excel colors Keep me up-to-date if it doesn't work I'll send you a real working program which I know is working on my Desktop. Tom Claus Luethje wrote: > 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/ > > --------------------------------------------------------------------- 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/
