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