【发布时间】:2014-10-27 16:46:46
【问题描述】:
我正在使用 Excel 文件作为源导出带有 Apache POI 的 Excel 文件,并且对于某些单元格(不是全部)仅引用其他单元格(例如 ='worksheet2'.B13)或使用引用的单元格计算值(例如 ='worksheet2'.C13 + 'worksheet2'.D13),它们只显示零 (0) 而不是正确的值。
奇怪的是,当我单击公式并更改其中的某些内容时,例如键入空格并删除它,然后键入回车,会显示正确的值!
关于信息,这些单元格的类型是“数字/标准”。
我还在某处读到我应该在“Excel 选项”中选中“启用迭代计算”,但它对我不起作用。
提前感谢您的帮助
【问题讨论】:
-
@Buddha 我认为这与代码无关,因为它与我用来生成整个文件(主要是添加行和复制公式)的类相同,并且它适用于其他单元格。所以我认为这与细胞有关。
-
你试过
wb.setForceFormulaRecalculation(true);吗? - 见此链接:poi.apache.org/spreadsheet/eval.html -
您是否要求 Apache POI 计算您更改/添加的 Excel 公式的缓存值?
-
@JohnBustos 感谢您的宝贵帮助 wb.setForceFormulaRecalculation(true) 对我不起作用,但您提供的链接很有帮助;我不知道 POI 缓存了之前的计算值,所以 wb.getCreationHelper().createFormulaEvaluator().evaluateAll() 解决了这个问题。
-
@Gagravarr 你是对的,这是缓存值的东西,我用 wb.getCreationHelper().createFormulaEvaluator().evaluateAll() 修复了它。谢谢,感谢您的帮助!
标签: excel excel-formula apache-poi cell formula