如何重新计算细胞的公式?

Ric*_*d77 2 c# excel npoi

我的代码设置了很多单元格值.最后,在生成excel文件之前,需要评估每个单元格中的公式.对于大多数床单来说,情况进展顺利.

但是,有一个单元格抛出异常.该单元格正在计算其后的一系列单元格的平均值,并参考其他工作表中的单元格.我想当第一个细胞试图计算平均值时,之后的细胞还没有被评估.

这是该单元格的公式

=IFERROR(AVERAGEIF(D2:AU2,"<>-"),"-")
Run Code Online (Sandbox Code Playgroud)

我怀疑这是因为单元格int在其他工作表中引用了单元格.D2例如,具有以下公式=Common!E2.

所以我决定做的是:

  1. 包裹调用以在try-catch块中执行公式.
  2. 如果执行单元格抛出异常,我保存该单元格的坐标.
  3. 然后我执行抛出异常的单元格

我注意到同一个单元格一直在抛出错误.只是为了能够退出循环,我数到3次迭代.

生成excel生成时,该单元格具有该值-.但是,当我选择单元格然后按enter,它会执行并显示正确的值.

我推迟执行该单元格的原因是,在第一次迭代之后,已经评估了引用其他工作表的单元格.但是,它仍然没有工作,因为它不断抛出异常.

谢谢你的帮助.

更新

我正在使用npoi和c#.

Eva*_*ans 8

在NPOI

if(wb is XSSFWorkbook) {
    XSSFFormulaEvaluator.EvaluateAllFormulaCells(wb);
} else {
    HSSFFormulaEvaluator.EvaluateAllFormulaCells(wb);
}
Run Code Online (Sandbox Code Playgroud)