使用datatable.net导出数据时删除列

时间:2015-11-30 05:54:07

标签: javascript jquery datatables

我正在处理一个项目,我想在将表格导出为pdf时删除特定的列。所以我使用了datatables.net中的代码,这是我的导出代码

<script type="text/javascript">
    $(document).ready(function() {
        var currentDate = new Date()
        var day = currentDate.getDate()
        var month = currentDate.getMonth() + 1
        var year = currentDate.getFullYear()


        var d = day + "-" + month + "-" + year;
        $('#detailTable').DataTable( {
            dom: 'Bfrtip',
            buttons: [ 
                {
                    extend: 'excelHtml5',
                    title: d+ ' Purchase Orders'
                },
                {
                    extend: 'csvHtml5',
                    title: d+ ' Purchase Orders'
                },
                {
                    extend: 'pdfHtml5',
                    title: d+ ' Purchase Orders',
                    orientation: 'landscape',
                    pageSize: 'LEGAL'
                }
             ]
        } );
    });

我把它设为风景,因为表格有点长,这里是我导出的pdf的输出(我审查了一些值,对不起) enter image description here

有没有办法可以删除值为&#39;编辑&#39;?

的列

提前致谢

2 个答案:

答案 0 :(得分:1)

是的,您可以将列索引设置为隐藏从数据表导出的列,您必须在按钮属性中添加列选项,如下例所示: -

$('#datatable').dataTable({
    "sScrollY": "350px",
    "bPaginate": false,
    "sDom": 'lfrtip<"clear spacer">T',
    "oTableTools": {
        "sSwfPath": "/flash/copy_cvs_xls_pdf.swf",
        "aButtons": [
            {
                "sExtends": "copy",
                "mColumns": [0, 1, 3, 4]
            },
            {
                "sExtends": "csv",
                "mColumns": [0, 1, 3, 4]
            },
            {
                "sExtends": "pdf",
                "mColumns": [0, 1, 3, 4]
            },
            {
                "sExtends": "print",
                "mColumns": [0, 1, 3, 4]
            },
        ]
    }
});

您可以访问这些网址以获取更多帮助 https://datatables.net/forums/discussion/3210/tabletools-how-to-hide-columns-when-exporting-copying

它可能对你有帮助。

答案 1 :(得分:1)

我更喜欢利用HTML来控制我的表的感觉,这减少了我需要为数据表的常见实现编写的Javascript,而不是使用特定的列号(columns: [0, 1, 2])我使用了jQuery选择器。

特别是在我的软件中,我有按钮动作的列,通常在

中看起来很悲惨
$.extend(true, $.fn.dataTable.defaults, {
    dom: 'Bfrtlip',
    lengthMenu: [[10, 25, 50, 250, -1], [10, 25, 50, 250, "All"]],
    buttons: [
        {
            extend: 'copy',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            }
        },
        {
            extend: 'excel',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            }
        },
        {
            extend: 'csv',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            }
        },
        {
            extend: 'print',
            exportOptions: {
                columns: "thead th:not(.noExport)"
            }
        }
        //'copy', 'excel', 'csv', 'print' // , 'pdf' - Wait for next PDFMake release because of this bug https://github.com/bpampuch/pdfmake/pull/443
    ]
});

现在我的桌子:

<table>
    <thead>
        <tr>
            <th>First Column</th>
            <th>Second Column</th>
            <th class="noExcel">Column to Hide</th>
            <th>Fourth Column</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>First Column value</td>
            <td>Second Column value</td>
            <td>Column to Hide value</td>
            <td>Fourth Column value</td>
        </tr>
    </tbody>
</table>

当调用$(“table”)。Datatables()时,它将具有Copy&gt;的按钮。 Excel&gt; CSV&gt;打印,但每个都会忽略第3列,其中包含“noExport”类。