【发布时间】: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) 时间复杂度,它极大地加快了速度。