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