ASP.NET MVC 导出CSV 的 CsvFileResult 类

public class CsvFileResult<T> : FileResult where T : class
    {
        private IEnumerable<T> _data;

        public CsvFileResult(IEnumerable<T> data)
            : base("text/CSV")
        {
            _data = data;
        }

        protected override void WriteFile(HttpResponseBase response)
        {
            var maxLine = int.Parse(ConfigurationManager.AppSettings["csvExport:MaxLine"]);

            int count = 0;
            var outPutStream = response.OutputStream;
            using (var streamWriter = new StreamWriter(outPutStream, System.Text.Encoding.UTF8))
            using (var writer = new CsvWriter(streamWriter))
            {
                writer.WriteHeader<T>();
                foreach (var item in _data)
                {
                    writer.WriteRecord(item);
                    count++;
                    if (count % 50 == 0)
                    {
                        streamWriter.Flush();
                        response.Flush();
                    }
                    if (count >= maxLine)
                    {
                        break;
                    }
                }
            }
        }
    }

实现依赖于CSVHelper

时间: 2024-10-24 00:55:33

ASP.NET MVC 导出CSV 的 CsvFileResult 类的相关文章

ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)

要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指定目录,然后提供下载. 效果如下: 选中了多行,会导出多个工作簿sheet,一个汇总的,其他的就是明细数据. 这里我使用了NPOI组件来进行excel导出,下面是要几个封装好的类,从网上找的,然后修改了一下. GenerateSheet.cs using NPOI.SS.UserModel; usi

asp.net MVC中如何用Membership类和自定义的数据库进行登录验证

asp.net MVC 内置的membershipProvider可以实现用户登陆验证,但是它用的是自动创建的数据库,所以你想用本地数据库数据去验证,是通过不了的. 如果我们想用自己的数据库的话,可以写自己的membershipProvider!下面介绍如果创建自己的membershipProvider: 1.写自己的MembershipProvider类,这个类继承自命名空间System.Web.Security下的MembershipProvider类 这个类放在哪无所谓,这里我放在新建My

ASP.NET MVC项目实现BasePage基类用作ASPX.CS网页继承

在ASP.NET MVC项目开发,还是需要创建一些Web Page来实现一些功能,如呈现报表等... 但是一旦项目的.ASPX网页太多了,其中的程序代码也会有代码冗余,出现这些情况,我们得需要对这些代码进行重构. 比如,项目中需要呈现很多报表,就会创建许多.aspx网页: 所有呈现报表的.aspx.cx代码都一样,唯独高亮的部分有区别. 按照面向对象编程,可以把这些代码提升去父类中去. 把不相同的地方,改为方法的参数即可. 接下来,我们需要对.aspx.cs实现对基类的继承> 但不管怎样,当我们

Asp .Net MVC中常用过滤属性类

1 /// <summary> 2 /// 3 /// </summary> 4 public class AjaxOnlyAttribute : ActionFilterAttribute 5 { 6 /// <summary> 7 /// Called by the ASP.NET MVC framework before the action method executes. 8 /// </summary> 9 /// <param name=

ASP.NET MVC导出excel

前端代码: 1 @Html.ActionLink("导出Excel", "ExportWarehouseInOutDetailTable", new {warehouseInOutId = Model.Id},new {@class = "btn btn-primary pull-right"}) 后端代码 1 public void ExportWarehouseInOutDetailTable(long warehouseInOutId) 2

asp.net MVC 导出查询结果到Excel

首先在View视图中有一表单form,导出按钮<input class="btn export" type="button" value="导出" />,在js写入点击导出按钮的代码,如下: $(".export").click(function () { window.location.href = "/Statis/ExportExecel?data=" + $("form&quo

ASP.NET MVC 自定义处理JSON ActionResult类

1.统一JSON格式处理方式,同时指定ContentType类型,解决低版本浏览器获取json时ContentType为application/json提示下载的问题. public abstract class CustomResult<TData> : ActionResult { public abstract TData GetObject(); protected JsonSerializerSettings SerializerSettings; protected void In

Asp.net MVC Bundle 的使用与扩展

一.Asp.net 自带Bundle的使用: 1. 在Globale中注册与配置 BundleConfig.RegisterBundles(BundleTable.Bundles); public class BundleConfig { // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725 public static void RegisterBundles(Bundle

Asp.Net MVC 控制器

原文链接:http://www.asp.net/learn/mvc/ 这篇教程探索了ASP.NET MVC控制器(controller).控制器动作(controller action)和动作结果(action results)这几个主题.在读完本篇教程之后,你将会理解控制器如何控制访问者与ASP.NET MVC网站进行交互的方式. 1.理解控制器 MVC控制器负责响应对ASP.NET MVC网站发起的请求.每一个浏览器请求都映射到了一个专门的控制器.举个例子,设想一下你在浏览器地址栏输入了下面