Jquery - DataTables [tableTools]: export only visi

2020-06-03 09:15发布

I just started out using jQuery DataTables.

using the tableTools of DataTables, is it possible to only export visible rows instead of all the rows? If for example the pagination was set to 10 I would expect only 10 rows to be exported. The same goes for a search result.

Here's part of the code:

$(document).ready(function() {
      var table = $('#example').DataTable({
        "pagingType": "full_numbers",
          "iDisplayLength" : 10,
                dom: 'T<"clear">lfrtip',
                 "oTableTools": {
            "aButtons": [
{ "sExtends": "copy", "mColumns": "visible",      "bSelectedOnly": true },
{ "sExtends": "xls", "mColumns": "visible" },
{ "sExtends": "print", "mColumns": "visible" }

], "sRowSelect": "multi"},


             "order": [[ 0, "asc" ]]
    } ) ;...

Thank you.

4条回答
【Aperson】
2楼-- · 2020-06-03 09:17

If you are using flash to export, need to mention swf path to work.

$("#example").dataTable( {
    "sDom": 'T<"clear">lfrtip',
    "oTableTools": {
        "sSwfPath": "Path to your copy_csv_xls_pdf.swf files comes with TableTools",
        "aButtons": [
            {
                "sExtends": "copy",
                "sButtonText": "Copy to clipboard",
                "oSelectorOpts": { filter: "applied", order: "current" }
            },
            {
                "sExtends": "csv",
                "sButtonText": "Export to CSV",
                "oSelectorOpts": { filter: "applied", order: "current" }
            },
            {
                "sExtends": "print",
                "sButtonText": "Print",
                "oSelectorOpts": { filter: "applied", order: "current" }
            }
        ]
    }
} );

There are few additional options also available to aButtons object.

"mColumns": [1, 2,...] - List of columns to include in export result

"sTitle": "filename" - desire filename for export file

------------------Update---------------------------

In the newer version of datatable - datatableTools is retired

Please use buttons extension

buttons: [
        {
            extend: 'copyHtml5',
            exportOptions: {
                columns: [ 0, ':visible' ]
            }
        },
        {
            extend: 'excelHtml5',
            exportOptions: {
                columns: ':visible'
            }
        },
        {
            extend: 'pdfHtml5',
            exportOptions: {
                columns: [ 0, 1, 2, 5 ]
            }
        },
    ]
查看更多
再贱就再见
3楼-- · 2020-06-03 09:22

I used this solution and it worked. Try this:

<script>
$(document).ready(function() {
    var table = $('#example').DataTable( {
        "pagingType": "full_numbers",
        "iDisplayLength": 10,
        "dom": 'T<"clear">lfrtip',
        "oTableTools": {
          "aButtons": [
            {'sExtends':'copy',
              "oSelectorOpts": { filter: 'applied', order: 'current' },
            },
            {'sExtends':'xls',
              "oSelectorOpts": { filter: 'applied', order: 'current' },
            },
            {'sExtends':'print',
              "oSelectorOpts": { filter: 'applied', order: 'current' },
            }
          ]
        },
    });
});
</script>
查看更多
叛逆
4楼-- · 2020-06-03 09:35

You can achieve that behavior by selecting all visible rows before saving, then deselecting them after saving completed.

$(document).ready(function() {
    $('#example').DataTable( {
        dom: 'T<"clear">lfrtip',
        "oTableTools": {
            "sRowSelect": "multi",
            "aButtons": [
                {
                    "sExtends": "csv",
                    "bSelectedOnly": true,
                    "fnComplete": function ( nButton, oConfig, oFlash, sFlash ) {
                        var oTT = TableTools.fnGetInstance( 'example' );
                        var nRow = $('#example tbody tr');
                        oTT.fnDeselect(nRow);
                    }
                }
            ]
        }
    } );

    $('a.DTTT_button_csv').mousedown(function(){
        var oTT = TableTools.fnGetInstance( 'example' );
        var nRow = $('#example tbody tr');
        oTT.fnSelect(nRow);
    });
} );
查看更多
做个烂人
5楼-- · 2020-06-03 09:39

You may set the selection of the page to current page for specific export.

Ref: http://datatables.net/docs/DataTables/1.9.4/#$

{ "sExtends": "xls", "mColumns": "visible", "oSelectorOpts": { page: "current" } }
查看更多
登录 后发表回答