在 Datatables Tabletools 中从导出中排除列

Posted

技术标签:

【中文标题】在 Datatables Tabletools 中从导出中排除列【英文标题】:Exclude column from export in Datatables Tabletools 【发布时间】:2015-12-06 20:31:25 【问题描述】:

我的数据表有以下初始化:

$(document).ready(function() 
    $('.datatable').dataTable(
        "dom": 'T<"clear">lfrtip',
        "tableTools": 
            "sSwfPath": "/js/plugins/dataTables/swf/copy_csv_xls_pdf.swf",
        ,
        "columnDefs": [
            "targets": 'no-sort',
            "orderable": false
        ]

    );
);

DT 的 TableTools 插件为我提供了用于导出的 Flash 按钮。我想排除某个类.no-export 的表列。我知道mColumns 选项,但我无法让它按类别申请列。我在这里Excluding last column of jQuery DataTables.net TableTools 阅读了答案,其中 Joe Jonston 通过设置建议了这种可能性:

"aoColumnDefs": [ "mColumns": false, "aTargets": ["no-export"] ],

我尝试以各种方式应用代码,但我的理解中缺少一些东西。

【问题讨论】:

【参考方案1】:

解决方案

请参阅this answer 了解可能的解决方案。

您可以使用mColumns 定义一个函数,该函数将返回所有列的索引,这些列的类no-export 分配给标题中的th 元素。

$('.datatable').dataTable(
    "dom": 'T<"clear">lfrtip',
    "tableTools": 
        "sSwfPath": "/js/plugins/dataTables/swf/copy_csv_xls_pdf.swf",
        "aButtons": [
          "sExtends": "csv",
          "mColumns": function (settings) 
               var api = new $.fn.dataTable.Api( settings );
               return api.columns(":not(.no-export)").indexes().toArray();
          
        ]
    
);

【讨论】:

谢谢,我只是在尝试这个,但似乎代码实际上导出了相反的内容,类为 .no-export 的列 - 但几乎就在那里...... @jtheman,你是对的,它恰恰相反,我已经更正了代码。 太棒了! :) 谢谢!

以上是关于在 Datatables Tabletools 中从导出中排除列的主要内容,如果未能解决你的问题,请参考以下文章

DataTables TableTools 插件 - 如何在 Codeigniter 中配置 sSwfPath 路径?

jQuery dataTables - TableTools:导出时隐藏行和列

将 TableTools 用于 R Shiny 中的 DataTables 用于 renderDataTable

DataTables/TableTools - 单击一行时是不是可以获得所选行的准确列表?

DataTables JS / TableTools JS - 导出和打印

为啥这个 dataTables jQuery 插件 (TableTools) 不工作?