我使用Excel文件作为源导出带有Apache POI的Excel文件,而某些单元格(并非所有)只是引用其他单元格(如='worksheet2'.B13
)或使用引用的单元格计算值(如{{1} }),它们只显示零(0)而不是正确的值。
奇怪的是,当我点击公式并更改其中的某些内容时,输入空格并删除它然后输入enter,显示正确的值!
有关信息,这些单元格的类型是“数字/标准”。
我还在某处读过“Excel选项”中的“启用迭代计算”,但它对我不起作用。
提前感谢您的帮助
答案 0 :(得分:4)
在@JohnBustos和@Gagravarr的帮助下,我使用以下方法修复了问题:
wb.getCreationHelper().createFormulaEvaluator().evaluateAll();
显然,Excel会缓存以前计算的结果(在我的情况下,它是源Excel文件中的零),我们需要触发重新计算来更新它们。
请参阅此链接:http://poi.apache.org/spreadsheet/eval.html /部分:"重新计算公式"