Yes, correct, you only need the setCellStyle() call on the cell itself then.
Dominik. On Thu, Nov 5, 2015 at 4:30 PM, Schene, Chris <[email protected]> wrote: > Hi, > > This is my logic below for creating a cell. I have several overloads: one > for string, one for integer, one for double > > The getColorBasedOnStatus returns a color based on the status of a given > row (OK-black, ERROR-RED, WARNING-AQUA) > > So, I assume what I need to do is create three styles:Black, Red, AQUA and > give those styles class level scope and just use those class level objects > rather than creating a new one for each cell. > > Correct? > > > private short getColorBasedOnStatus(String rowState){ > short result = IndexedColors.BLACK.getIndex(); > if(rowState.compareTo("ERROR") != 0) { > result = IndexedColors.RED.getIndex(); > } > > if(rowState.compareTo("WARNING") != 0) { > result = IndexedColors.AQUA.getIndex(); > } > return result; > } > > > /** > * Creates a cell and aligns it a certain way. > * > * @param wb the workbook > * @param row the row to create the cell in > * @param i the column number to create the cell in > * @param halign the horizontal alignment for the cell. > */ > private void createCell(XSSFWorkbook wb, Row row, int i, short > halign, > short valign, String value) { > CreationHelper ch = wb.getCreationHelper(); > > Cell cell = row.createCell(i); > cell.setCellValue(ch.createRichTextString(value)); > CellStyle cellStyle = wb.createCellStyle(); > > try { > String rowState = RowState.get(row.getRowNum()-1); > > > if (rowState.compareToIgnoreCase("ok") != 0 ) { > XSSFFont myFont= wb.createFont(); > myFont.setFontHeightInPoints((short)10); > myFont.setFontName("Arial"); > myFont.setColor(getColorBasedOnStatus(rowState)); > myFont.setBold(true); > myFont.setItalic(false); > cellStyle.setFont(myFont); > } > } catch(Exception e) {} > > cellStyle.setAlignment(halign); > cellStyle.setVerticalAlignment(valign); > > cell.setCellStyle(cellStyle); > } > > > > Christopher Schene > Field Engineer > Global > Fraud and Identity Solutions > > Experian > 16260 N. 71st Street > Suite #400 > Scottsdale > Arizona, USA > 85254 > +1 602.290.9792 mobile > +1 480.751.3928 office > [email protected] > www.experian.com <http://www.experian.com/> > > > > > > On 11/4/15, 10:03 AM, "Schene, Chris" <[email protected]> wrote: > >>"Make sure you create all of your styles outside of the loop, and re-use >>them. >>³ >> >>Ah! Makes sense! I actually create a new style for each and every cell. >>Since I can have up to 50,000 rows that is a total of 2.35 million >>separate styles. >> >>Yikes! >> >>Thanks, >> >>Chris >> >>Christopher Schene >>Field Engineer >>Global >>Fraud and Identity Solutions >> >>Experian >>16260 N. 71st Street >>Suite #400 >>Scottsdale >> Arizona, USA >> 85254 >>+1 602.290.9792 mobile >>+1 480.751.3928 office >>[email protected] >>www.experian.com <http://www.experian.com/> >> >> >> >> >> >>On 11/4/15, 9:55 AM, "Nick Burch" <[email protected]> wrote: >> >>>On Wed, 4 Nov 2015, Schene, Chris wrote: >>>> I am using the code below to create a very large spread sheet that is >>>>47 >>>> rows wide. >>>> >>>> There are a few very large strings in the rows, but for the most part >>>>the >>>> data is fairly small. >>>> >>>> If the .xls file is over about 1000 rows I get an error when I load >>>>the >>>> .xls file in excel saying it needs to repair the file and I lose all >>>>the >>>> row color and column width settings. >>> >>>Cell Styles are workbook scoped, not cell scoped. Make sure you create >>>all >>>of your styles outside of the loop, and re-use them. If you create one >>>style per cell, you'll use too many and Excel will sulk.... >>> >>>Nick >>> >>>--------------------------------------------------------------------- >>>To unsubscribe, e-mail: [email protected] >>>For additional commands, e-mail: [email protected] >>> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
