jQuery/DataTables - 导出到 Excel

标签 jquery datatables

我正在创建一个 MVC 5/Bootstrap 应用程序。我需要允许用户将表格数据发送到 Excel。我知道 TableTools 可以做到这一点。但是,除了导出到 Excel 之外,我不想将 DataTables/TableTools 用于其他任何用途。我不想用它来做任何表格样式。我正在为此使用 Bootstrap。

那么,有没有办法可以严格使用 DataTables/TableTools 来实现此目的?我还希望能够在表单上的某个位置放置一个按钮(不一定是默认的 TableTools 按钮),并且在单击时执行 Excel 导出。这可能吗?

最佳答案

我想说很可能不是,因为 TableTools 插件旨在对 DataTables 对象进行操作。就我个人而言,如果不想使用 DataTables,我不会花任何时间调查这一点,但我将分享我如何为 ASP.NET MVC 5/Bootstrap 站点实现类似功能的概述。

只需在我的 View 上放置一个按钮即可:

<button id="export" type="button">Export</button>

在我的 View 的脚本部分中,我添加了一个用于单击事件的函数(在本示例中,我传递了 DataTable 的附加参数):

$("#export").click(function (e) {
var myTableSettings = dataTable.dataTableSettings[0];

$.ajax(
    {
        url: "GenerateCsv",
        type: "POST",
        data: myTableSettings.oAjaxData,
        success: function (data) {
            document.location.href = 'DownloadCsv';
        }
        error: function () {}               
    });
});

由于 ajax 调用不处理启动文件下载的 header ,因此需要两步方法:首先使用 ActionResult 生成文件(“GenerateCsv”),然后使用 FileStreamResult 返回文件(“DownloadCsv”)。

在本例中,我使用 LinqToCsv ( http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library ) 生成 CSV 文件。我提到 CSV 格式是因为 TableTools 创建了 Excel 识别的 CSV 文件,而不是真正的 Excel 文件 ( http://datatables.net/extensions/tabletools/buttons )。

当我最初研究 TableTools 时,我遇到了一个问题,即当希望使用下载插件进行完整表导出时如何重新绑定(bind)自定义参数,因此发现这种方法更可取。

关于jQuery/DataTables - 导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071195/

相关文章:

javascript - 我可以在同一个页面上使用多个版本的 jQuery 吗?

javascript - jQuery 数据表 - 工具提示程序在第 2 页上不起作用

javascript - Jquery Datatable - 从服务器中提取数据 - 如何为列设置类

Struts2 传递变量案例

javascript - 本地存储: Get specific localstorage value of which contains many items

javascript - 无法在 ion-spinner 上执行 ng-click 事件

jquery - jquery 函数在单击按钮上不起作用?

javascript - 如何响应用户在 jQuery.dataTables 中选择一行?

spring - 无法将查询字符串参数映射到我的JavaBean(使用Spring 4和Datatables)

jquery - 从外部链接打开 Accordion