【发布时间】:2011-04-02 20:08:46
【问题描述】:
我知道有人以多种方式提出和回答了这个问题,但没有一种方法能够触及我需要了解的问题的症结所在。在 WebForms 中,我们“颠覆”渲染过程并直接写入响应的输出流。如何使用控制器操作来实现这一点,将 CSV 写入 Excel 文件?
【问题讨论】:
标签: asp.net-mvc
我知道有人以多种方式提出和回答了这个问题,但没有一种方法能够触及我需要了解的问题的症结所在。在 WebForms 中,我们“颠覆”渲染过程并直接写入响应的输出流。如何使用控制器操作来实现这一点,将 CSV 写入 Excel 文件?
【问题讨论】:
标签: asp.net-mvc
我一直在一个 asp.net mvc 应用程序中使用这个:http://www.filehelpers.net/,看看入门指南,你应该从那里得到它
【讨论】:
为了详细说明 Omu 的 FileHelpers 答案,我可以将此处的 @shamp00's ideas 与 this answer here 结合起来,以便通过流即时将 CSV 渲染到 FileContentResult。
给定这样的 FileHelpers DTO 模型:
[DelimitedRecord(",")]
public class Foo
{
public string Name { get; set; }
public int Id { get; set; }
}
还有一个控制器动作:
public FileContentResult DownloadFoosCSV()
{
var foos = GetFoos(); // IEnumerable<Foo>
var fileHelper = new FileHelperEngine<Foo>();
using (var stream = new MemoryStream())
using (var streamWriter = new StreamWriter(stream, Encoding.UTF8))
{
fileHelper.WriteStream(streamWriter, foos);
streamWriter.Flush();
return File(stream.ToArray(), "application/csv", "NewFoos.csv");
}
}
【讨论】:
您可以尝试http://develoq.net/2011/export-csv-actionresult-for-asp-net-mvc/ 中描述的 CsvActionResult
【讨论】:
与您编写任何其他文件的方式相同——使用 FileResult 及其后代。
【讨论】: