Jar*_*eck 3 coldfusion apache-poi coldfusion-9
给出一个由Coldfusion 9via 生成的跨表公式的工作簿Apache POI.
我想以编程方式强制整个工作簿在将工作簿保存到磁盘之前执行"使用依赖关系树重建的完整计算" .
因此,当我的最终用户打开电子表格时,他们不必按Ctrl- Alt- Shift- F9.
我如何实现这一目标coldfusion?
参考文献:
不幸的是,这个问题没有简单的答案.
选项1:
我认为最短的路线是使用CreationHelper.createFormulaEvaluator().evaluateAll().不幸的是,它不适用于CF9.该方法在POI的更高版本中添加,而不是CF9附带的版本.这同样适用于setForceFormulaRecalculation().您可以使用JavaLoader.cfc来加载更新版本的POI.然后你就可以访问这些方法了.但这可能比你想要的这项任务更复杂.
选项2:
如果失败了,如果你知道正确的顺序,你可以遍历工作表并重新计算每个工作表的公式:
wb = sheet.getWorkBook();
evaluator = wb.getCreationHelper().createFormulaEvaluator();
// you could also use an array of sheet names instead
for(sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++) {
poiSheet = wb.getSheetAt(sheetNum);
rows = poiSheet.rowIterator();
while (rows.hasNext()) {
r = rows.next();
cells = r.cellIterator();
while (cells.hasNext()) {
c = cells.next();
if (c.getCellType() == c.CELL_TYPE_FORMULA) {
evaluator.evaluateFormulaCell(c);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
选项3:
另一种可能性是使用宏填充模板,该宏在工作簿打开时自动重新计算.明显的缺点是它依赖于宏.但由于它本身是由Excel执行的,因此它可能是最可靠/最强大的选项.
| 归档时间: |
|
| 查看次数: |
1879 次 |
| 最近记录: |