我正在研究在 MVC 应用程序中将数据导出到 Excel 的各种方法。
许多库要求将数据存储在 DataTable 中。
我将数据传递到模型中以从 View 访问。看来您无法将此模型传递回 Controller 。
如果不是导出为 html 表格而是纯 Excel 文件,则可以选择 JavaScript。
当前,我正在调用一个函数,该函数将再次运行查询以构建字符串并使用 System.IO.File.WriteAllText 来输出文件。我不喜欢这种方式,因为我必须调用数据库才能再次运行查询(我已经在 View 中的模型中拥有了所需的所有数据)并且路径是硬编码的,我希望弹出一个保存对话框向上。
有更好的方法吗?
我真的很喜欢以下两种方法之一:
- 找到一个“技巧”将数据从 View 传递回 Controller ,也许 TempData 可以以某种方式在 View 中使用?
将生成纯 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());
最佳答案
您可以使用像 EPPlus 这样的库。 Excel 文件可以完全用 XML 创建。格式为 OpenXML。它本身使用起来并没有多大乐趣,但是这个库使它易于管理。您可以按需构建 XML 文件,然后将其流式传输到响应中,因此从用户的 Angular 来看,他们正在下载 Excel 文件。链接页面显示了如何从数据源(在本例中为 DataTable)开始、创建电子表格并将其添加到 HttpResponse。您可以创建包含公式的工作表,甚至可以创建包含多个工作表的工作簿。
关于javascript - 在 MVC 应用程序中将数据导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36094742/