Question: How can I exclude the last column of jQuery DataTables.net when using the TableTools extras to export?
Details
I\
You can exclude using class names like this:
"aoColumnDefs": [{ "mColumns": false, "aTargets": ["no-export"] }],
Here is similar code I have working in production:
var oTable = $('#<%= gvComputers.ClientID %>').dataTable({
"bJQueryUI": true,
"bStateSave": true,
"sPaginationType": "full_numbers",
"aLengthMenu": [[5, 10, 25, 50, 100, -1], [5, 10, 25, 50, 100, "All"]],
"aoColumnDefs": [
{ "sSortDataType": "dom-text", "aTargets": ["text-sort_fixed"] },
{ "sType": "numeric", "aTargets": ["numeric-sort"] },
{ "sSortDataType": "dom-select", "aTargets": ["select-sort"] },
{ "sSortDataType": "dom-checkbox", "aTargets": ["checkbox-sort"] },
{ "bSearchable": false, "aTargets": ["no-search"] },
{ "bSortable": false, "aTargets": ["no-sort"] }
]
});
I set the classes as needed on my table header, footer and cells dynamically since I do not know what columns the user will remove from their personal view of the data.
hth
Just for googlers: in tabletools 2.2.3 you can now use function for mColumns
var dataTable = $grdData.DataTable({
tableTools: {
aButtons: [{
"sExtends": "csv",
"sButtonText": "csv",
"mColumns": function ( dtSettings ) {
var api = new $.fn.dataTable.Api( dtSettings );
return api.columns(":not(:last)").indexes().toArray();
}
}]
}
});
The best I've found so far is these hacks. Not particularly useful in my case, but maybe you have better luck
http://datatables.net/forums/discussion/327/tabletools-v1.0.2-save-as-excel-csv-copy-and-print/p3
In my case the best solution was to set the exportable attribute of the column to false. The same way you can set orderable, searchable, etc.
Suppose you have six columns, and you only want to display columns 1, 2, 3 and 5. Try this :
{
text: "print",
extend: "print",
className: "btn btn-lg btn-danger",
exportOptions:
{
columns: [0,1,2,4]}
}
}