【发布时间】:2021-07-28 22:14:27
【问题描述】:
在 jQuery dataTables 中,如果表格中的特定列满足特定条件,有没有办法从 Excel 导出中排除一行?
我目前为导出按钮设置了以下参数
$(document).ready( function () {
var table = $('#resultTable').DataTable(
{
searching: false,
pageLength: 50,
order: [3, 'asc'],
paging: true,
deferRender: true,
initComplete: function( settings, json ) {
$('#resultContainer').show();
$('#loading').hide();
},
/*dom: 'Bfrtip',*/
/*buttons: ['excel'],*/
buttons: [
{
extend: 'excelHtml5',
exportOptions: {
columns: [19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
}
}],
columns: [
{orderable: false},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,{orderable: false},{orderable: false},{orderable: false}
],
}
);
table
.buttons()
.container()
.appendTo( '#menu' );
} );
但是,我想从导出中排除第 19 列的值设置为“true”的任何行。
已编辑:这是数据表外观的示例。过滤应该在带有标题 DNR 的列上。
| [Merge] | First Name | Last Name | Gender | City | State | Zip | Phone | Fax | Email 2 | Primary Specialty | Secondary Specialty | Practice Name | Years | D | F | NPI | ME | DNR | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [button] | Joe | Smith | M | Anytown | PA | 12345 | 123-456-7890 | 123-456-7891 | test@test.com | test@test.com | Primary | Secondary | Joe Smith | 5 | FALSE | FALSE | 12345 | 12345 | TRUE |
| [button] | Susan | Jones | F | Anytown | PA | 12346 | 123-456-7890 | 123-456-7891 | test@test.com | test@test.com | Primary | Secondary | Joe Smith | 6 | FALSE | FALSE | 12345 | 12345 | FALSE |
| [button] | John | Johnson | M | Anytown | PA | 12347 | 123-456-7890 | 123-456-7891 | test@test.com | test@test.com | Primary | Secondary | Joe Smith | 7 | FALSE | FALSE | 12345 | 12345 | FALSE |
如果您查看最后一列 (DNR),在此示例中,只有第 2 行和第 3 行将包含在导出中,而第 1 行将被省略,因为该列中的值为 True。
【问题讨论】:
-
您能否展示一个包含更多行的示例?因为我们不知道如何格式化你的数组(我想)按钮(如果可能的话用行来消除)
-
谢谢。我已经编辑了问题以包含初始化表的完整函数以及数据样本。
-
exportOptions选项还包括一个rows子选项(类似于您已经在使用的columns选项)。rows和columns都可以提供一个函数。对于rows,它可以是:rows: function ( idx, data, node ) { return data; }。因此,您可以增强该功能以包含条件逻辑,以选择性地仅返回您要导出的行。但我们不知道您的行是如何构成的,因此我们无法提供具体的解决方案。您可以使用console.log( data );亲自查看。
标签: jquery datatables