POIUtility.cfc - "Too Many Fonts / Formats" Issue Fixed

Posted May 29, 2008 at 10:06 AM

Tags: ColdFusion

A number of people have brought this issue up to me (I would thank you, but I simply am not organized with my emails, sorry). Basically, because the POI Utility custom tags were creating new CellStyle objects for each cell in the Excel sheet, Microsoft Excel was going over the number of formats that it could use. Apparently there is some upper limit, like a thousand individual formats of something, before it can no longer apply styles to new cells.

To fix this issues, I am now caching the cell styles based on a Hash of all the properties in the CSS plus the date/number formatting for that cell. That way, two cells that have the same CSS and number format (for example) will actually share the same CellStyle instance. This slows down the process since each style has to have its CSS properties hashed in alphabetical order, but at least it fixes the "Too Many Fonts" issue. I will try to work on optimizing it a bit, but this should do for now.

The new code can be downloaded from the POIUtility.cfc Project page.

Post Comment  |  Ask Ben  |  Other Searches  |  Print Page





Reader Comments

Aug 6, 2008 at 10:19 AM // reply »
5 Comments

Ben, Thanks for the update.

I've been playing with the June version and I just upgraded to the August version (CF7) and I noticed that the text portion of the excel sheet is now taking on the formating of the class title or header. In your example (write_custom_tags_template.cfm - the green back ground and white font bleed into the data rows that aren't formated by numeric or data. It worked fine in the June version.

Also, what are the possible date formats? I've tried mm/dd/yyyy and other and get an invalid format error?

thanks, Jim


Aug 6, 2008 at 10:25 AM // reply »
7,572 Comments

@Jim,

That is odd. I haven't noticed this bleeding. Could you possibly take a screenshot of the Excel file opened and send it to me ... ben/bennadel/com.

Yeah, the date formats are a bit limited. If you open up the readme.txt file, you will see the list of possible date and number formats. There doesn't seem to be a good mm/dd/yyyy one unfortunately.


Aug 6, 2008 at 11:00 AM // reply »
5 Comments

Ok, the fix to the bleed problem is to declare a type of "@" or "General" for the data cell.


Aug 6, 2008 at 11:03 AM // reply »
7,572 Comments

@Jim,

That might be a fix, but something is going wrong in the code probably. I will dig around, see what I can find out.


Post Comment  |  Ask Ben

Recent Blog Comments
Mar 19, 2010 at 4:34 PM
An Intensive Exploration Of jQuery With Ben Nadel (Video Presentation)
Hey I guess the video is down. Is there anyway you can upload to youtube or vimeo or some other service? Greatly appreciated. ... read »
Mar 19, 2010 at 4:24 PM
ColdFusion CFPOP - My First Look
@Ben Thanks for the follow up! The root of the problem had to do with being able to trace bounced emails to specific records in a DB table. Let's say you run an email campaign and you get 1,000 bou ... read »
Mar 19, 2010 at 4:15 PM
SQL COUNT( NULLIF( .. ) ) Is Totally Awesome
Thank you Ben and Tony! Either of these work for the summary report I am working on and the info is much appreciated! I think I like Tony's a little better because I won't have to educate every ... read »
Mar 19, 2010 at 3:35 PM
ColdFusion Path Usage And Manipulation Overview
@Ben, Sorry. Clarification. expandpath worked for me in application.cfc, but not in other templates. ... read »
Mar 19, 2010 at 3:33 PM
ColdFusion Path Usage And Manipulation Overview
@Ben, Never did. Worked around it and moved on. Here is what I ended up with in onApplicationStart: // chop off "\application.cfc" application.appdir = GetCurrentTemplatePath().ReplaceFirst( "[\\\ ... read »
Mar 19, 2010 at 12:55 PM
Content Is Not Allowed In Prolog - ColdFusion XML And The Byte-Order-Mark (BOM)
Thank you! Thank you! Thank you! One more additional bit to add to this: in addition to the, "Content is not allowed in Prolog," error solved by Ben's REReplace, I was also getting, "An invalid XML ... read »
Mar 19, 2010 at 12:52 PM
Thoughts And Goals For 2010
@Ben Do bodybuilders from our generation take glucosamine supplements to strengthen joints for this type of exercise? I'm assuming in your early 30s, no? ... read »
Mar 19, 2010 at 12:46 PM
Using ColdFusion's CFLocation Tag For Inline Image SRC Attributes
@Ben, Yes, the client reads the headers and if it has a cached version of the file (same ETAG) then shuts down the request and render the cached version. ( I think it is done in the same request/co ... read »