从公式类型的单元格读取值时,需要先调用评估函数得到结果,部分公式单元格返回了数组越界的错误。
翻阅NPOI 评估函数相关代码 发现问题出现在一下代码
int startIx = cce.GetHashCode() % arr.Length;
for (int i = startIx; i < arr.Length; i++)
此处的startIx 可能为负数导致的数组越界。 没有知道解决方案,各位同学帮忙看看。
一下是部分DEBUGLOG
IndexOutOfRangeException: Index was outside the bounds of the array.
NPOI.SS.Formula.FormulaCellCacheEntrySet.AddInternal (NPOI.SS.Formula.CellCacheEntry[] arr, NPOI.SS.Formula.CellCacheEntry cce) (at <99794dfbb4dc4cc184c11b23b5708e9c>:0)
NPOI.SS.Formula.FormulaCellCacheEntrySet.Add (NPOI.SS.Formula.CellCacheEntry cce) (at <99794dfbb4dc4cc184c11b23b5708e9c>:0)
NPOI.SS.Formula.CellCacheEntry.AddConsumingCell (NPOI.SS.Formula.FormulaCellCacheEntry cellLoc) (at <99794dfbb4dc4cc184c11b23b5708e9c>:0)
NPOI.SS.Formula.FormulaCellCacheEntry.ChangeConsumingCells (NPOI.SS.Formula.CellCacheEntry[] usedCells) (at <99794dfbb4dc4cc184c11b23b5708e9c>:0)
NPOI.SS.Formula.FormulaCellCacheEntry.SetSensitiveInputCells (NPOI.SS.Formula.CellCacheEntry[] sensitiveInputCells) (at <99794dfbb4dc4cc184c11b23b5708e9c>:0)