here's a simplistic version of an approach which i employ for my app:



Create lightweight wrappers for the font (cellstyle too maybe)
that wraps the properties that you would set into a font.
Provide a method in this wrapper class to get or create a font
when you pass in a workbook:

    public HSSFFont getOrCreateFont(HSSFWorkbook wb) {...}

In cell style wrapper:
    public HSSFCellStylegetOrCreateCellStyle(HSSFWorkbook wb) {...}

If the cell style etc. with that name exists in workbook, return
the instance already present, else create one in the workbook.

Create a factory (or maybe even just a HashMap) that hands out 
instances of your wrapper class given its "name".

Also take a look at javadocs for class:

     org.apache.poi.hssf.usermodel.contrib.HSSFCellUtil


HTH,
~ amol



> -----Original Message-----
> From: Kurt Stein [mailto:[EMAIL PROTECTED]
> Sent: Friday, March 04, 2005 9:34 AM
> To: POI Users List
> Subject: RE: Regarding HSSF Formatting issues
> 
> 
> Just curious - but what is the best practice for sharing an 
> HSSFFont between
> java routines - I recreate all the fonts in each routine but 
> this can get a
> bit lengthy, not to mention it increases the chances of errors.
> 
> Is there a way to inherit all font styles if one passes the workbook
> variable? Or should one create these somewhere separate as if 
> they were a
> css style sheet and then include them?
> 
> Also, I have noticed that sometimes if 2 different styles are 
> created under
> the same name, but used in different rows (in the same 
> workbook) created
> from different java routines, that the style called firsat 
> overrides the
> style created in the local java routine.
> 
> I think this is a bug.
> 
> Kurt
> 
> -----Original Message-----
> From: Suchitra Sundararajan [mailto:[EMAIL PROTECTED]
> Sent: Friday, March 04, 2005 4:55 AM
> To: [email protected]
> Cc: [EMAIL PROTECTED]
> Subject: RE: Regarding HSSF Formatting issues
> 
> 
> Hi ,
> Thanks Amol for the suggestions but I still require further help.
> Is there any other way other than increasing the JVM size, 
> with respect
> to destroying the java objects and recreating them in say batches of
> 1000?
> I tried creating the File and Workbook objects inside the 
> while loop and
> even though the file was created in append mode it had only one row,
> presumably the last row.
> Even when I am adding data in batches, without recreating the file and
> workbook objects that is, creating it outside the while loop, 
> the object
> size keeps growing as, at no point are we destroying the object itself
> and every time I write the object it is actually overwriting 
> the earlier
> file.
> Can you help me with this?
> I have attached the java file.
> The above code throws an out of memory exception.
> What I want is this.
> / Is there some way in which the object can be set to null and then
> created again and the file appended. I created the file in append mode
> but still no avail.
> / In case I increase the heap size how reliable is it?
> / What if I have applications having about 40-50 thousand rows. I mean
> there might be a case wherein even the max heap size might be 
> exceeded?
> 
> Can you please provide me info about these?
> 
> -----Original Message-----
> From: Amol Deshmukh [mailto:[EMAIL PROTECTED]
> Sent: Thursday, March 03, 2005 8:33 PM
> To: 'POI Users List'
> Subject: RE: Regarding HSSF Formatting issues
> 
> try increasing JVM heap size (-Xmx 512 etc.) at startup.
> ~ amol
> 
> > -----Original Message-----
> > From: Suchitra Sundararajan [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, March 03, 2005 10:03 AM
> > To: POI Users List
> > Subject: RE: Regarding HSSF Formatting issues
> >
> >
> > Hi,
> > Further to the suggestions made by all of you, I no longer
> > get the cell
> > style formatting issues. Thanks a lot!!
> > But then the Out of memory error persists , in my 
> particular case when
> > the number of rows are 3998 and the columns are of the 
> order of 60. I
> > checked out that quite  a few people have reported such 
> errors in some
> > of the mailing lists. Has a possible work around been got for
> > this case?
> > Is this a bug in this utility?
> >
> > Regards,
> > Suchitra
> >
> > -----Original Message-----
> > From: Suchitra Sundararajan
> > Sent: Thursday, March 03, 2005 8:14 PM
> > To: POI Users List
> > Subject: RE: Regarding HSSF Formatting issues
> >
> > Hi,
> >
> > Thanks a lot for the suggestions. I was earlier (before u 
> guys mailed
> > out) creating a new cell style for every row. I changed 
> this to create
> > one instance of the cell style and just keep the setCellStyle method
> > within the loop but I am still encountering the same problem.
> >
> > I have attached the piece of code below. Kindly have a look 
> at it and
> > tell me if I am missing out anything.
> >
> >
> >
> > HSSFFont font=hsf.createFont();
> >
> >                   HSSFCellStyle cellStyle= hsf.createCellStyle();
> >
> >                   font.setColor(HSSFFont.COLOR_NORMAL);
> >
> >                   font.setItalic(false);
> >
> >                   font.setFontName("Times New Roman");
> >
> >                   cellStyle.setFont(font);
> >
> >                   cellStyle.setAlignment(cellStyle.ALIGN_JUSTIFY);
> >
> >                   cellStyle.setWrapText(true);
> >
> >
> >
> >                   while(rs.next())
> >
> >                   {
> >
> >                         int iBatchCount=0;
> >
> >
> >
> >                         HSSFRow row = 
> sheet.createRow((short)RowNum);
> >
> >
> >
> >                         for(int i=1;i<=rsmd.getColumnCount();i++)
> >
> >                         {
> >
> >
> >
> >                               HSSFCell cell =
> > row.createCell((short)(i-1));
> >
> >                               cell.setCellStyle(cellStyle);
> >
> >                               cell.setCellValue(rs.getString(i));
> >
> >                         }
> >
> >                         RowNum++;
> >
> >                         iBatchCount++;
> >
> >                         System.out.println("Row num is " + RowNum);
> >
> >                         if(iBatchCount==1000)
> >
> >                         {
> >
> >                               hsf.write(fout);
> >
> >                               iBatchCount=0;
> >
> >
> >
> >                         }
> >
> >                   }
> >
> >                   hsf.write(fout);
> >
> >
> >
> > Thanks and Regards,
> >
> > Suchitra.
> >
> >
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, March 03, 2005 8:05 PM
> > To: [email protected]
> > Subject: RE: Regarding HSSF Formatting issues
> >
> >
> >
> >
> >
> > Are you creating a new HSSFStyle for each cell or using a
> > single shared
> >
> > style for all cells?
> >
> >
> >
> > Regards,
> >
> > Frans
> >
> >
> >
> >
> >
> > > -----Original Message-----
> >
> > > From: Suchitra Sundararajan [mailto:[EMAIL PROTECTED]
> >
> > > Sent: Thursday, March 03, 2005 3:24 PM
> >
> > > To: POI Users List
> >
> > > Subject: Regarding HSSF Formatting issues
> >
> > >
> >
> > >
> >
> > > Hi,
> >
> > >
> >
> > > I have used the HSSF class to write the results of my select
> >
> > > query into
> >
> > > an excel sheet. I noticed that even if there were just 2 
> columns and
> >
> > > about 1000 rows, there are some formatting issues. My data
> > is supposed
> >
> > > to be in TimesNewRoman size 10 but beyond some rows, in this
> >
> > > case around
> >
> > > 506 itself the format changes to Arial 10 and it reports Some text
> >
> > > formatting might have changed because the maximum number of
> > fonts has
> >
> > > been exceeded. I have attached the screen shot of the
> > error. The data
> >
> > > seems to be fine but the format has changed
> >
> > > Also once this error has been encountered, the next time i run the
> >
> > > program without closing the java file (i was running it
> > from Textpad)
> >
> > > even if the selected rows are only 10 the same formatting
> > error comes
> >
> > > up.
> >
> > > Also when the number of rows are very huge, about 10000 or
> > so it gives
> >
> > > me a run time exception of out of memory exception. I thought
> >
> > > initially
> >
> > > this was because I was writing to the file at the end of
> > all the rows.
> >
> > > So I started writing for every row into the sheet but 
> that made the
> >
> > > whole process too slow. It was taking several minutes. So 
> I started
> >
> > > writing to the excel sheets in batches of 1000 but even
> > that threw an
> >
> > > Out of bound exception. Is this a reported bug in the 
> feature? Am I
> >
> > > missing out some very important thing here? Is there some
> > clearing of
> >
> > > the workbook object that I should do?
> >
> > >
> >
> > > Thanks and Regards,
> >
> > > Suchitra
> >
> > >
> >
> > >
> >
> > >
> > 
> ---------------------------------------------------------------------
> >
> > > 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/
> >
> > >
> >
> >
> >
> >
> >
> > -----------------------------------------------------------------
> >
> > ATTENTION:
> >
> > The information in this electronic mail message is private and
> >
> > confidential, and only intended for the addressee. Should you
> >
> > receive this message by mistake, you are hereby notified that
> >
> > any disclosure, reproduction, distribution or use of this
> >
> > message is strictly prohibited. Please inform the sender by
> >
> > reply transmission and delete the message without copying or
> >
> > opening it.
> >
> >
> >
> > Messages and attachments are scanned for all viruses known.
> >
> > If this message contains password-protected attachments, the
> >
> > files have NOT been scanned for viruses by the ING mail domain.
> >
> > Always scan attachments before opening them.
> >
> > -----------------------------------------------------------------
> >
> >
> >
> >
> >
> > 
> ---------------------------------------------------------------------
> > 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/

Reply via email to