Given a workbook with cross-sheet formulas generated by Coldfusion 9 via Apache POI.
I want to programmatically force an entire workbook to do a “full calculation with dependency tree rebuild” before saving the workbook to disk.
So that when my end-users open the spreadsheet, they do not have to press Ctrl–Alt–Shift–F9.
How do I accomplish this in coldfusion?
References:
Unfortunately there is no easy answer to this one.
Option 1:
I think the shortest route is to use
CreationHelper.createFormulaEvaluator().evaluateAll(). Unfortunately, it is not available in CF9. That method was added in a later version of POI than the one shipped with CF9. The same applies tosetForceFormulaRecalculation(). You could probably use the JavaLoader.cfc to load a newer version of POI. Then you would have access to those methods. But that may be more involved than you want for this one task.Option 2:
Failing that, if you know the proper sequence you could iterate through the sheets and recalculate the formulas for each one:
Option 3:
Another possibility is to populate a template with a macro which automatically recalculates when the workbook opens. The obvious disadvantage is it relies on a macro. But since it is performed by Excel itself, it is probably the most reliable/robust option.