我正在一个项目上升级一个WPF程序,该程序必须大量使用Excel工作表。它使用Closedxml和Excel互操作来操纵Excel文件并添加数据。
经过一些跟踪,我发现一个函数非常缓慢。它使用与其他类似功能相同的方法,但其他所有功能都正常运行。问题是Closedxml.copyto()
消耗了85%的处理能力。
它的目的仅仅是在有新记录需要打印的情况下,以一张Excel工作表为模板。它将第一张工作表复制到新工作表,然后将数据写入其中。
如果您对如何加快这种过程有任何想法,请告诉我!
foreach (object[] row in rows)
{
if (Common.integer(row[0]) < from_no || Common.integer(row[0]) > to_no)
{
continue;
}
sheetNum++;
if (sheetNum != 1)
{
这部分消耗了85%的处理能力
sheet_edit.CopyTo(sheetNum.ToString());
sheet_edit = book.Worksheet(sheetNum);
}
sheet_edit.Name = row[0].ToString();
ct.ThrowIfCancellationRequested();
w.ReportProgress(progCnt * 100 / maxCnt);
progCnt++;}
非常感谢您!
PS:对不起,我的英语不好!
PS:对于所有否决了我的问题的人,请告诉我原因?是没有帮助还是其他原因?
PS:我整天都在搜索,但是我找不到任何答案。有很多方法,但是这些都不适合我的需求。
使用互操作:不太快。
使用openxml:这意味着我编写了更多代码,并且转换为该程序并不容易
使用closedXML.copyRange:当然可以,但是它不会复制列的宽度,行的高度……这意味着需要更多的代码,模式过程……所以速度不是很快。
我决定在循环中使用dianogtics.process(print),第一张纸将在每个循环中重复使用。这种速度更快,但是我们不能选择打印机或打印机设置...默认打印机和设置将自动使用。
我可以向客户解释这一点,我认为这是可以接受的。 但是我仍在等待答案。.我碰巧知道如何加快这种过程,请让我知道!