.net 导出csv 百万数据3s弹出下载框

   日期:2021-03-23     浏览:99    评论:0    
核心提示:背景:现在市面上数据量大的导出,大部分都是点击生产。然后有个异步程序,去查询、拼装数据。生产excel保存到服务器上。然后在提供一个下载地址。一旦遇到10W+行的数据,导出就会很慢,甚至有的等待时间很长。本文介绍的是一种流式下载的方式,一边查数据,一边下载。核心代码 :1、yield return 解释:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/yield2、 var ft =...

背景:现在市面上数据量大的导出,大部分都是点击生产。然后有个异步程序,去查询、拼装数据。生产excel保存到服务器上。然后在提供一个下载地址。一旦遇到10W+行的数据,导出就会很慢,甚至有的等待时间很长。

本文介绍的是一种流式下载的方式,一边查数据,一边下载。

核心代码 :

1、 yield return 解释:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/yield

2、    var ft = HttpContext.Features.Get<Microsoft.AspNetCore.Http.Features.IHttpBodyControlFeature>();
            if (ft != null) ft.AllowSynchronousIO = true;  允许同步IO

源码地址:hhttps://github.com/BigMaJx/OOPDemo/blob/master/Api/Controllers/WeatherForecastController.cs

参考:NewLife.Cube Git:https://gitee.com/NewLifeX/NewLife.Cube/blob/master/NewLife.Cube/Common/ReadOnlyEntityController.cs

废话不多说,直接贴码。

  • 接口导出ExportCsv 注意 ft.AllowSynchronousIO = true;

  • 获取数据GetData,注意Class DisplayName为列头  注意yield return;GetList 可以大家可自己替换成从数据库查出的数据。一定分页查询。

  • 导出方法:OnExportExcel。反射获取列头,每行写入流   csv.WriteLine(result);

结果:

 

 

上视频:

.net 导出csv 百万数据3s弹出下载框

 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服