忽略datatables CSV导出中的第一列

5

我正在尝试根据jQuery datatables的数据导出CSV文件,并希望它排除第一列数据,这是我的当前脚本。

 <script>
 $(document).ready(function() {
 $('#example').DataTable( {
    dom: 'Bfrtip',
    lengthMenu: [
        [ 10, 25, 50, -1 ],
        [ '10 rows', '25 rows', '50 rows', 'Show all' ]
    ],
     buttons: [
        'copy', 'csv', 'excel', 'pdf', 'print', 'pageLength'
    ]
} );
} );
</script>

请问我需要添加什么才能使它工作?
3个回答

9

您需要在buttons定义中使用exportOptions

buttons: [
       {
           extend: 'pdf',           
           exportOptions: {
                columns: [1,2,3,4] // indexes of the columns that should be printed,
            }                      // Exclude indexes that you don't want to print.
       },
       {
           extend: 'csv',
           exportOptions: {
                columns: [1,2,3,4] 
            }

       },
       {
           extend: 'excel',
           exportOptions: {
                columns: [1,2,3,4] 
            }
       }         
    ]  

6

已接受的答案不错,但如果您不确定需要导出多少列,则可以使用另一种方法:

buttons: [
    {
        extend: 'excel', 
        exportOptions: {
            columns: ':gt(0)' 
        }
    }
]

第一列由偏移量0指定,所以此代码表示导出大于0的任何列(即除第一列外的每一列)。

1
我认为这是一个更好的答案,应该被接受,因为除了第一列之外,没有必要明确指定列索引。假设您有一个包含30个列的DataTable。您可以使用这个快速的一行代码,而不是columns:[1,2,3,... 30]。此外,表结构可能会随时间更新,列可能会添加或删除,因此此代码将独立于这些更改。 - Max Voisard

0
你可以使用在官方的dataTables论坛上提供的这个例子:
exportOptions: {
                 columns: function (idx, data, node) {
                     if (idx == 0) {
                         return false;
                     }
                     return true;
                  },
              },

使用此功能,您可以使用索引、数据或节点值来排除多个列,而无需知道索引的数量,您也可以对行使用相同的方法,只需在函数内部将替换为论坛链接: 从DataTable Jquery中排除列的函数 根据您访问的年份,链接可能无法正常工作!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接