我正在研究在我的MVC应用程序中将数据导出到Excel的各种方法。
许多图书馆都要求将数据存储在DataTables中。
我将数据传递到模型中以便从View访问。您似乎无法将此模型传回控制器。
如果JavaScript不是作为html表导出而是导出纯Excel文件,则JavaScript是一个选项。
目前,我正在调用一个函数,它将再次运行查询以构建字符串并使用将输出文件的System.IO.File.WriteAllText。我不喜欢这种方式,因为我必须再次调用数据库来运行查询(我已经拥有了View中模型中所需的所有数据)并且路径是硬编码的,我想要一个Save Dialog来弹出起来。
有更好的方法吗?
我真的很喜欢以下两种方式之一:
将生成纯Excel(.xlsx)文件的JavaScript
List<type> record = GetRecords();
StringBuilder sb = new StringBuilder();
sb.AppendLine("Data 1, Data 2, Data 3, Data 4");
foreach (var item in record)
{
sb.AppendFormat("{0},{1},{2},{3},{4}\n", item.1, item.2, item.3, item.4);
}
System.IO.File.WriteAllText("myfile.csv", sb.ToString());
答案 0 :(得分:1)
您可以使用EPPlus之类的库。 Excel文件可以完全用XML创建。格式是OpenXML。它本身并不是很有趣,但是这个库使它易于管理。您可以根据需要构建XML文件,然后在响应中对其进行流式传输,因此从用户的角度来看,他们正在下载Excel文件。链接页面显示如何从数据源(在本例中为DataTable)开始,创建电子表格,并将其添加到HttpResponse。您可以使用公式甚至包含多个工作表的工作簿创建工作表。