使用MVC(CSV,XLS,PDF等)导出的最佳格式

时间:2011-12-07 16:15:52

标签: asp.net asp.net-mvc sql-server-2008 c#-4.0

大家好我已经编写了一个mvc应用程序,它将在分页表中向用户显示大量的电话呼叫数据。这里讨论的数据量是一个月的数据,可能是大约950,000条记录。用户要求能够导出数据并以“漂亮”的清晰格式查看数据。我只是想知道什么是最好的格式导出这些数据,因为我们正在谈论大量的数据!任何想法都会非常感激!

3 个答案:

答案 0 :(得分:3)

我认为如果你想要一个小文件大小,你可以使用的最佳格式是CSV。 对于这样的事情,CSV是一种很好的格式。例如,Excel也可以打开CSV。

您可以执行以下操作,为用户提供下载csv文件的可能性,而无需在服务器硬盘上创建物理文件。

public ActionResult DownloadCsv(int id)
{
    //var data = ... // get the data for the id

    Response.Clear();
    Response.AddHeader("Content-Disposition", "attachment; filename=callData.csv");
    Response.ContentType = "text/csv";
    //write the column names
    Response.Write("Id;PhoneNr");

    //write the data
    foreach (var item in data)
    {
        Response.Write(String.Format("{0};{1}", item.Id, item.PhoneNr));
    }

    Response.End();
    return null;
}

希望这会有所帮助

答案 1 :(得分:2)

导出格式与您使用的服务器/客户端技术和框架无关,如ASP.NET MVC,WebForms,Windows Forms win客户端应用程序等......

您应该询问客户的第一个问题是他需要对导出的数据做些什么。

如果他们想要编辑或过滤/透视数据,csv可能是一个不错的选择,因为他们可以直接使用excel打开这些文件并使用它们。

如果他们只想阅读和存档基本搜索功能并轻松打印,pdf可能更合适。

实际上导出到csv简单易用的解决方案是嵌套在你从数据库获得的DataReader / DataTable并附加到StringBuilder,这一切都可以发生服务器端,然后您只需将csv内容流式传输到客户端进行下载,或者将其保存在服务器上并提供链接,或者将其压缩到服务器端并通过电子邮件发送......这一切都取决于您的要求。 / p>

对于PDF,有很多库可以生成这些acrobat reader文件......

答案 2 :(得分:0)

这取决于您的要求。我会使用CSV格式,因为它可以由客户轻松导入Excel电子表格中。您需要了解一些技术问题,例如要导出的数据大小。在MVC特定的实现中,我将创建一个中间视图,它将显示加载消息,然后使用javascript重定向用户到由Controller Action处理的url,该Action将负责获取数据并将其返回给用户。在操作方法中,您应该调用将从数据库读取数据的业务类,转换为CSV文件,然后使用(Zip format)压缩内容。然后,Action方法可以将FileStreamResult 的结果返回给用户。