【问题标题】:Excel cell displaying zero instead of a calculated / referenced valueExcel 单元格显示零而不是计算/参考值
【发布时间】: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 公式的缓存值?
  • @JohnBus​​tos 感谢您的宝贵帮助 wb.setForceFormulaRecalculation(true) 对我不起作用,但您提供的链接很有帮助;我不知道 POI 缓存了之前的计算值,所以 wb.getCreationHelper().createFormulaEvaluator().evaluateAll() 解决了这个问题。
  • @Gagravarr 你是对的,这是缓存值的东西,我用 wb.getCreationHelper().createFormulaEvaluator().evaluateAll() 修复了它。谢谢,感谢您的帮助!

标签: excel excel-formula apache-poi cell formula


【解决方案1】:

在@JohnBus​​tos 和@Gagravarr 的帮助下,我使用以下方法解决了问题: wb.getCreationHelper().createFormulaEvaluator().evaluateAll();

显然,Excel 缓存了以前计算的结果(在我的例子中,它是源 Excel 文件中的零),我们需要触发 重新计算 来更新它们。

请参阅此链接:http://poi.apache.org/spreadsheet/eval.html / 部分:“重新计算公式”

【讨论】:

  • 找了很久,谢谢分享。
猜你喜欢
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
相关资源
最近更新 更多