【问题标题】:EPPlus Range Formula calculation takes forever on larger filesEPPlus 范围公式计算在较大的文件上需要很长时间
【发布时间】:2022-10-06 08:29:12
【问题描述】:

我正在处理一个包含大约 87,000 行的工作表,并且我正在使用一个公式来将仅属于某个发票的采购金额相加。

这是我的公式:

workSheet.Cells[2, 17, workSheet.Dimension.End.Row, 17].Formula = \"SUMIF(A:A,A\"+2+\",N:N)\";

然后我运行一个 epplus 范围计算,以便我可以以编程方式处理这些值:

workSheet.Cells[2, 17, workSheet.Dimension.End.Row, 17].Calculate();

但是,这个 .Calculate() 需要很长时间才能运行。它适用于较小的文件!但是一旦数据变得太大,它就会极大地增加时间复杂度。

我可以用公式或 EPPlus 做些什么来让这个 .Calculate() 快速执行吗?谢谢!

  • 时间是相对的。有什么作用:.Calculate() 需要很长时间才能运行意思是?一个月?一周? 4个小时?当试图减少一项任务所花费的时间时,使用可量化的值很重要。多次执行该操作(例如:5 次)后,该操作的平均时间是多少?做什么迅速地意思是?您认为可接受的时间量是多少?
  • @user9938 我想通了。基本上花了很长时间,我不想继续运行代码。我发现特定的 excel 公式是 O(n^2),因为当在 EPPlus 中调用 .calculate() 时,它会递归地重新检查它通过的每一行的所有行,所以我只需要在 C# 中制作自己的公式那是 O(n) 时间复杂度,它极大地加快了速度。

标签: c# asp.net excel epplus


【解决方案1】:

cmets中的答案:

我发现特定的 Excel 公式是 O(n^2) 时间复杂度,因为当在 EPPlus 中调用 .calculate() 时,它会递归地重新检查它通过的每一行的所有行,所以我只需要在C# 基本上完成了 Excel 公式应该做的事情,但这次是 O(n) 时间复杂度,它极大地加快了速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-20
    • 2020-03-29
    • 2019-01-28
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多