我正在创建一个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/