Export CSV ActionResult for ASP.NET MVC
2013-01-23 23:37
274 查看
using System; using System.Data; using System.IO; using System.Text; using System.Web; using System.Web.Mvc; public sealed class CsvActionResult : FileResult { private readonly DataTable _dataTable; public CsvActionResult(DataTable dataTable) : base("text/csv") { _dataTable = dataTable; } protected override void WriteFile(HttpResponseBase response) { var outputStream = response.OutputStream; using (var memoryStream = new MemoryStream()) { WriteDataTable(memoryStream); outputStream.Write(memoryStream.GetBuffer(), 0, (int)memoryStream.Length); } } private void WriteDataTable(Stream stream) { var streamWriter = new StreamWriter(stream, Encoding.Default); WriteHeaderLine(streamWriter); streamWriter.WriteLine(); WriteDataLines(streamWriter); streamWriter.Flush(); } private void WriteHeaderLine(StreamWriter streamWriter) { foreach (DataColumn dataColumn in _dataTable.Columns) { WriteValue(streamWriter, dataColumn.ColumnName); } } private void WriteDataLines(StreamWriter streamWriter) { foreach (DataRow dataRow in _dataTable.Rows) { foreach (DataColumn dataColumn in _dataTable.Columns) { WriteValue(streamWriter, dataRow[dataColumn.ColumnName].ToString()); } streamWriter.WriteLine(); } } private static void WriteValue(StreamWriter writer, String value) { writer.Write("\""); writer.Write(value.Replace("\"", "\"\"")); writer.Write("\","); } } return new CsvActionResult(dataTableObject) { FileDownloadName = "ExportedFileName.csv" };
相关文章推荐
- Asp.net MVC 中Controller返回值类型ActionResult
- Action Filters for ASP.NET MVC
- ASP.NET MVC中常用的ActionResult类型
- 理解ASP.NET MVC中的ActionResult
- 了解ASP.NET MVC几种ActionResult的本质:FileResult
- 了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult
- ASP.NET MVC中常用的ActionResult类型
- ASP.NET MVC ActionResult的实现
- How to use Asp.Net Mvc ActionFilterAttribute for form authentication
- 了解ASP.NET MVC几种ActionResult的本质:HttpStatusCodeResult & RedirectResult/RedirectToRouteResult
- ASP.NET MVC中ActionResult返回值
- 理解ASP.NET MVC中的ActionResult
- ASP.NET MVC 重点教程一周年版 第五回 ActionResult的其它返回值
- ASP.NET MVC中常用的ActionResult类型
- asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染
- ASP.NET MVC几种ActionResult的本质:FileResult
- ASP.NET MVC 不同的 ActionResult 小示例
- 了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult
- Asp.Net MVC中不指定View Name时如何返回ActionResult的
- [翻译]ASP.NET MVC 3 开发的20个秘诀(十九)[20 Recipes for Programming MVC 3]:路由用户至特定的Controller或Action