gpt4 book ai didi

c# - 如何重新计算单元格的公式?

转载 作者:行者123 更新时间:2023-11-30 19:16:29 36 4
gpt4 key购买 nike

我的代码设置了很多单元格值。最后,在生成 excel 文件之前,需要计算每个单元格中的公式。对于大多数工作表,一切进展顺利。

但是,有一个单元格抛出异常。该单元格正在计算它之后的一系列单元格和其他工作表中的引用单元格的平均值。我猜想当第一个单元格试图计算平均值时,后面的单元格还没有被评估。

这是该单元格的公式

=IFERROR(AVERAGEIF(D2:AU2,"<>-"),"-")

我怀疑这是因为该范围内的单元格引用了其他工作表中的单元格。例如,D2 具有以下公式 =Common!E2

所以我决定做的是:

  1. 将执行公式的调用包装在 try-catch block 中。
  2. 如果执行单元格引发异常,我会保存该单元格的坐标。
  3. 然后我执行抛出异常的单元格

我注意到同一个单元格不断抛出错误。为了能够退出循环,我数到了 3 次迭代。

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

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

感谢您的帮助。

更新

我正在使用 npoi 和 c#。

最佳答案

在 NPOI 中

if(wb is XSSFWorkbook) {
XSSFFormulaEvaluator.EvaluateAllFormulaCells(wb);
} else {
HSSFFormulaEvaluator.EvaluateAllFormulaCells(wb);
}

关于c# - 如何重新计算单元格的公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088737/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com