程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 ClosedXML 时 Excel 排序卡住大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_489_0@如何解决使用 ClosedXML 时 Excel 排序卡住? 开发过程中遇到使用 ClosedXML 时 Excel 排序卡住的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 ClosedXML 时 Excel 排序卡住的解决方法建议,希望对你解决使用 ClosedXML 时 Excel 排序卡住有所启发或帮助;

我有 14000 行的 xLSX。 我可以使用标准 Excel 应用程序在一秒钟内按列对其进行排序。 当我尝试在 ClosedXML 中做同样的事情时,它被卡住了。我的意思是它非常慢(比如 10 分钟或更长时间),但最终它完成了操作。 假设我创建了一个文件

XLWorkbook wb = new XLWorkbook();
IXLWorksheet ws = wb.AdDWorksheet("my test");
ws.Cell(1,1).Value = "A";
ws.Cell(1,2).Value = "B";
for (int i = 0; i < 14000; i++)
{
    ws.Cell(i + 2,1).Value = i;
    ws.Cell(i + 2,2).Value = i % 2;
}
wb.SaveAs("test.xLSX");

现在有几种方法可以按B列排序,例如

var tab = ws.Range(1,1,14001,2);
Stopwatch stopwatch = new Stopwatch();
Console.Writeline("start");
stopwatch.Start();
tab.SetautoFilter();
wb.SaveAs("test.xLSX");
ws.autoFilter.sort(2);
stopwatch.Stop();
Console.Writeline("Sorted after " + (int)stopwatch.Elapsed.@R_312_10586@lSeconds + " seconds");
wb.SaveAs("test.xLSX");

我应该切换到 @H_346_3@microsoft.office.Interop.Excel 以按列对表格进行排序吗?或者 ClosedXML 中是否有可用的方法?

@H_489_0@解决方法

是的,当然,Interop 更适合排序,在这种情况下它是即时的,而 ClosedXML 不可用。 这是示例代码

 var excelApp = new Microsoft.office.Interop.Excel.Application();
 // Make the object visible.
 excelApp.Visible = true;
 excelApp.Workbooks.Open(Path.Combine( Directory.GetCurrentDirectory(),"test.xLSX"));
 Worksheet ws = (Worksheet)excelApp.ActiveSheet;

确保在上述之前使用 ClosedXML 创建电子表格(在这种情况下,它比互操作要快)。

最后是排序部分

var tab = (RangE)ws.Range[ws.Cells[2,1],ws.Cells[14001,2]];
Stopwatch stopwatch = new Stopwatch();
Console.WriteLine("start");
stopwatch.Start();
ws.Cells[1,2].AutoFilter();
tab.SELEct();
tab.Sort(ws.Cells[2,2],XlSortOrder.xlAscending);
Console.WriteLine("Sorted after " + (int)stopwatch.Elapsed.@R_312_10586@lSeconds + " seconds");    
excelApp.ActiveWorkbook.Save();
excelApp.ActiveWorkbook.Close();
excelApp.Quit();

它需要一秒钟,正如预期的那样。

排序助手库shared

大佬总结

以上是大佬教程为你收集整理的使用 ClosedXML 时 Excel 排序卡住全部内容,希望文章能够帮你解决使用 ClosedXML 时 Excel 排序卡住所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:使用