ASP.NET Core MVC项目用ClosedXML导出Excel时如何对name列升序排序
ASP.NET Core MVC 使用ClosedXML导出Excel按Name列升序的实现方案
方案1:数据源查询阶段排序(性能最优,推荐)
直接在EF Core查询教师数据时添加排序逻辑,排序在数据库侧完成,不需要额外处理Excel对象,性能最好,代码改动最小。
只需要修改你的查询语句,添加OrderBy(t => t.Name)即可:
// 原查询修改为按Name升序后取200条 var teachers = this.schoolContext.Teacher.OrderBy(t => t.Name).Take(200).ToList();
方案2:ClosedXML工作表层面排序
如果不需要修改数据源逻辑,可在生成Excel工作表后调用ClosedXML的内置排序方法实现排序,修改工作表部分的代码即可:
using (XLWorkbook wb = new XLWorkbook()) { var worksheet = wb.Worksheets.Add(dt); // 按第1列(Name列)升序排序,ClosedXML列索引从1开始 worksheet.RangeUsed().Sort(1); // 也可以通过列标识排序,更稳妥,避免列顺序调整后排序错列:worksheet.Sort("A"); using (MemoryStream stream = new MemoryStream()) { wb.SaveAs(stream); return stream.ToArray(); } }
补充优化提示
你现有代码中catch块的throw e.InnerException会丢失原始异常的调用栈,建议直接使用throw;保留完整异常信息便于排查问题。
内容的提问来源于stack exchange,提问作者Ramesh Singh
相关产品推荐
相关产品推荐

