我的代码设置了很多单元格值。最后,在生成 Excel 文件之前需要评估每个单元格中的公式。对于大多数床单来说,一切进展顺利。
但是,有一个单元格抛出异常。该单元格正在计算其后面的一系列单元格以及其他工作表中的参考单元格的平均值。我猜当第一个单元格尝试计算平均值时,后面的单元格尚未评估。
这是该单元格上的公式
=IFERROR(AVERAGEIF(D2:AU2,"<>-"),"-")
我怀疑这是因为单元格在其他工作表中引用了该范围的单元格。D2
,例如,有以下公式=Common!E2
.
所以我决定做的是:
- 将执行公式的调用包装在
try-catch
block.
- 如果执行单元格引发异常,我会保存该单元格的坐标。
- 然后我执行抛出异常的单元格
我注意到同一个单元格不断抛出错误。为了能够退出循环,我数了 3 次迭代。
生成 Excel 时,该单元格具有值-
。但是,当我选择单元格然后按enter
,它执行并显示正确的值。
我推迟执行该单元格的原因是,在第一次迭代之后,引用其他工作表的单元格已经被评估。但是,它仍然无法工作,因为它不断抛出异常。
谢谢你的帮助。
Update
我正在使用 npoi 和 c#。
In NPOI
if(wb is XSSFWorkbook) {
XSSFFormulaEvaluator.EvaluateAllFormulaCells(wb);
} else {
HSSFFormulaEvaluator.EvaluateAllFormulaCells(wb);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)