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

因此,有没有一种方法可以严格地为此目的使用DataTables / TableTools?而且,我还希望能够在表单上的某个位置放置一个按钮(不一定是默认的TableTools按钮),然后单击该按钮即可执行Excel导出。这可能吗?

最佳答案

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

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

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


在我视图的脚本部分中,我为click事件添加了一个函数(在本示例中,我传入了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调用不处理头文件以启动文件下载,因此需要两步方法:首先是要生成文件的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时,遇到了一个问题,当希望使用Download插件进行全表导出时,如何重新绑定我的自定义参数,因此发现这种方法比较可取。

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

10-11 05:12