Ask Ben: Updating An Excel Document More Than Once With The POI Utility

Posted August 6, 2008 at 9:04 AM

Tags: ColdFusion, Ask Ben

Does this utility [POI] include a way to continue to add data to the spread sheet after the first addition? Thanks again for all of your help.

Yes it does. Well, sort of. The POI utility ColdFusion custom tags allows you to dictate a "template" to be used. This template is an existing Excel file whose contents are read in without alteration. Then, you can make changes to the existing Excel data as you see fit. So, if you treat each file as a template, you can continue to make as many updates as you want.

What the POI ColdFusion custom tags do NOT do is pick up where they left off. So for example, if you wrote 100 rows then closed the file. Then opened it again and wrote 100 rows - you'd end up with a file that has 100 rows in it, not 200. If your intent is to have 200 rows, then perhaps we can update the functionality of the tags. Because the "Index" attribute of the rows and cells allows you to manually output data in position you like, I want to avoid the idea of an "append" action:

 Launch code in new window » Download code as text file »

  • <poi:sheet action="append">

Besides, if you really are using the POI custom tags to populate a formatted template, you aren't really appending.

What about something like a CALLER-scoped variable that has information about the read-in Excel file? Something like this:

 Launch code in new window » Download code as text file »

  • <poi:sheet>
  • <poi:row index="#(POI.InitialRowCount + 1)#">
  • <poi:cell ... />
  • </poi:row>
  • </poi:sheet>

Here, in the context of the current Sheet, POI.InitialRowCount stores the number of rows that were already in the Excel file at the time of instantiation. This way, you could tell the "Index" tracking to pick up after the last row of the read-in Excel file.

Do you think something like that might be useful?

Download Code Snippet ZIP File

Post Comment  |  Ask Ben  |  Permalink  |  Print Page



Learning ColdFusion 9 - ColdFusion 9 tutorials, samples, examples, demos

Reader Comments

Ana
Aug 8, 2008 at 5:41 PM // reply »
3 Comments

In most cases this solution would be perfect. In my case the row numbers are part of the template design (excel row numbering is turned off for aesthetic purposes), therefore, when the excel file is read there will be data in Column 1 row 1 thru ...


Aug 8, 2008 at 6:30 PM // reply »
6,516 Comments

@Ana,

I am not sure that I am following you exactly. Are you saying that your using row numbers in a way that this would not work?


Ana
Aug 12, 2008 at 6:59 PM // reply »
3 Comments

Yes. From my understanding of what you wrote is that the IntitialRowCount() would check the for the last row that has data. Is that correct? If so the author of the excel file as placed row numbers in column1:row1 with a style. That's why I think what you are saying wouldn't work for me.


Post Comment  |  Ask Ben

Recent Blog Comments
Nov 22, 2009 at 8:55 AM
Project HUGE: Trying Out A 4-Exercise Limit
Very informative. Thanks for the great post. ... read »
aha
Nov 22, 2009 at 7:42 AM
Using A Name Suffix In ColdFusion's CFMail Tag
Why not? ... read »
Nov 22, 2009 at 7:37 AM
Using A Name Suffix In ColdFusion's CFMail Tag
asd ... read »
Nov 22, 2009 at 4:30 AM
jQuery Live() Method And Event Bubbling
dasegtezr ... read »
Nov 22, 2009 at 4:03 AM
jQuery Live() Method And Event Bubbling
C_fieri ... read »
Nov 22, 2009 at 1:56 AM
Learning ColdFusion 9: Using CFQuery In CFScript Can Enable SQL Injection Attacks
Why adobe would give you script equivalent of cfquery is beyond me. I love cfquery tag because it helps me wriite clean sql, and get away from the horrible jdbc queries If I wanted to write javali ... read »
Nov 22, 2009 at 1:45 AM
Streaming Text Using ColdFusion's CFContent Tag And The Variable Attribute
The reason you would want to do this is to stream. Ack json/xml files to ria clients I used thus technique before because putting json in response stream causes debugging info to come thru As well a ... read »
Nov 21, 2009 at 6:47 PM
Hal Helms - Real World Object Oriented Development, Sarasota - Day Five
@charlie griefer, Thank you.. ... read »