javascript - 在 MVC 应用程序中将数据导出到 Excel

标签 javascript c# .net excel model-view-controller

我正在研究在 MVC 应用程序中将数据导出到 Excel 的各种方法。

  1. 许多库要求将数据存储在 DataTable 中。

  2. 我将数据传递到模型中以从 View 访问。看来您无法将此模型传递回 Controller 。

  3. 如果不是导出为 html 表格而是纯 Excel 文件,则可以选择 JavaScript。

当前,我正在调用一个函数,该函数将再次运行查询以构建字符串并使用 System.IO.File.WriteAllText 来输出文件。我不喜欢这种方式,因为我必须调用数据库才能再次运行查询(我已经在 View 中的模型中拥有了所需的所有数据)并且路径是硬编码的,我希望弹出一个保存对话框向上。

有更好的方法吗?

我真的很喜欢以下两种方法之一:

  1. 找到一个“技巧”将数据从 View 传递回 Controller ,也许 TempData 可以以某种方式在 View 中使用?
  2. 将生成纯 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/

相关文章:

javascript - 用户点击 Twitter Bootstrap 链接后,如何在移动 View 中自动折叠顶部导航栏?

javascript - 在 Safari 和 Chrome 上,单击事件时从父窗口调用子窗口的功能不起作用

c# - WPF 工具包 DataGrid 列调整大小事件

javascript - Xpath:获取节点属性

javascript - 从维基百科 API 获取 SVG 文件

c# - 添加或减去的值会导致无法表示的 DateTime。参数名称

c# - Xamarin 波斯语日期选择器

c# - 从列表中删除特定元素

c# - 如何巧妙地从 IEnumerable<T> 创建匿名类型?

c++ - 使用 BeginInvoke 时出现参数计数不匹配异常