【问题标题】:Improve Performance of EPPlus cycling through worksheets通过工作表提高 EPPlus 循环的性能
【发布时间】:2020-03-05 16:46:33
【问题描述】:

我一直在寻找瓶颈性能问题,但我惊讶地发现:

foreach (ExcelWorksheet ws in wb.Worksheets)
}

将近 2/3 的时间都在吃东西。

我将上面的内容与这个进行了比较:

foreach (ExcelWorksheet ws in wb.Worksheets)
    MyMethod(ws);
}

没有MyMethod 的耗时:7341、5495、5551 ElapsedMilliseconds

而带有MyMethod 的那个花费了:9969、9285、8096 ElapsedMilliseconds。

有什么办法可以改善吗?如果有帮助,我只寻找可见的工作表。

导致上述代码块的代码:

Pack = new ExcelPackage(file);
ExcelWorkbook wb = pack.Workbook;

Stopwatch testsw = new Stopwatch();
testsw.Start();

foreach (ExcelWorksheet ws in wb.Worksheets)
    MyMethod(ws);
}

testsw.Stop();

Console.WriteLine("testsw " + testsw.ElapsedMilliseconds);

【问题讨论】:

    标签: c# excel performance epplus


    【解决方案1】:

    对我来说,

    var fi = new System.IO.FileInfo(sourceFile);
    using (var p = new ExcelPackage(fi))
    {
        var sw = new System.Diagnostics.Stopwatch();
        sw.Start();
        var wslist = p.Workbook.Worksheets;
        foreach ( var ws in wslist)
        {
            Console.WriteLine(ws.Name);
        }
        sw.Stop();
        Console.WriteLine("sw " + sw.ElapsedMilliseconds);
    }
    

    耗时 209 毫秒

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2013-01-29
      相关资源
      最近更新 更多