您的位置:首页 > 编程语言 > ASP

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" };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: