从 jQuery 数据表中的导出中排除列
Posted
技术标签:
【中文标题】从 jQuery 数据表中的导出中排除列【英文标题】:Exclude column from export in jQuery Datatables 【发布时间】:2016-08-14 07:32:31 【问题描述】:我正在使用 jQuery 数据表 1.10.11,它的导出按钮功能如 here 所述:
我想跳过最后一列导出到 Excel 文件,因为该列中有编辑/删除按钮。我的列是动态生成的,所以我不能使用以下方法:
$('#reservation').DataTable(
dom: 'Bfrtip',
buttons: [
extend: 'excel',
text: 'Export Search Results',
className: 'btn btn-default',
exportOptions:
columns: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
]
);
我知道这个问题被问了多次,但没有一个对我有用,可能是版本问题。
【问题讨论】:
【参考方案1】:尝试使用排除 columns
选项最后一列的 CSS 选择器。
$('#reservation').DataTable(
dom: 'Bfrtip',
buttons: [
extend: 'excel',
text: 'Export Search Results',
className: 'btn btn-default',
exportOptions:
columns: 'th:not(:last-child)'
]
);
【讨论】:
【参考方案2】:你可以添加一个类:
<th class='notexport'>yourColumn</th>
然后按类别排除:
$('#reservation').DataTable(
dom: 'Bfrtip',
buttons: [
extend: 'excel',
text: 'Export Search Results',
className: 'btn btn-default',
exportOptions:
columns: ':not(.notexport)'
]
);
【讨论】:
老实说,这是你们大多数人都在寻找的答案。它更具动态性,允许您只需将一个类添加到您不想导出的任何列,这对于许多用例都非常有用。当您有多个导出选项时,这也可以让您更好地控制。 @CodeSpent 是的,我同意这一点。非常适合我的情况【参考方案3】:我只是想我会添加这个,因为接受的答案只有在您还没有包含其他内容(例如可见列)时才能排除。
为了只包括除最后一列之外的可见列,以便您可以将其与列可见性按钮一起使用,请使用
$('#reservation').DataTable(
dom: 'Bfrtip',
buttons: [
extend: 'excel',
text: 'Export Search Results',
className: 'btn btn-default',
exportOptions:
columns: ':visible:not(:last-child)'
]
);
如果你想显式添加你自己的类:
$('#reservation').DataTable(
dom: 'Bfrtip',
buttons: [
extend: 'excel',
text: 'Export Search Results',
className: 'btn btn-default',
exportOptions:
columns: ':visible:not(.notexport)'
]
);
【讨论】:
非常感谢!!代码:columns: ':visible:not(.notexport)'
一个善于思考的人!这是非常需要的!谢谢【参考方案4】:
适用于 Excel、csv 和 pdf
dom: 'lBfrtip',
buttons: [
extend: 'excelhtml5',
text: '<i class="fa fa-file-excel-o"></i> Excel',
titleAttr: 'Export to Excel',
title: 'Insurance Companies',
exportOptions:
columns: ':not(:last-child)',
,
extend: 'csvHtml5',
text: '<i class="fa fa-file-text-o"></i> CSV',
titleAttr: 'CSV',
title: 'Insurance Companies',
exportOptions:
columns: ':not(:last-child)',
,
extend: 'pdfHtml5',
text: '<i class="fa fa-file-pdf-o"></i> PDF',
titleAttr: 'PDF',
title: 'Insurance Companies',
exportOptions:
columns: ':not(:last-child)',
,
,
]
【讨论】:
谢谢,你发布了完整的代码,所以对我们来说更快。【参考方案5】:javascript 部分:
$(document).ready(function()
$('#example').DataTable(
dom: 'Bfrtip',
buttons: [
extend: 'print',
exportOptions:
// columns: ':visible' or
columns: 'th:not(:last-child)'
,
'colvis'
],
columnDefs: [
targets: -1,
visible: false
]
);
);
以及要包含的js文件:
https://code.jquery.com/jquery-3.3.1.js
https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js
https://cdn.datatables.net/buttons/1.5.2/js/dataTables.buttons.min.js
https://cdn.datatables.net/buttons/1.5.2/js/buttons.print.min.js
https://cdn.datatables.net/buttons/1.5.2/js/buttons.colVis.min.js
希望这对您有所帮助。 谢谢。
【讨论】:
以上是关于从 jQuery 数据表中的导出中排除列的主要内容,如果未能解决你的问题,请参考以下文章
在 Datatables Tabletools 中从导出中排除列
跨两个数据库导入/导出表的某些列并排除 mysql 中的重复电子邮件
用于导出的 jQuery DataTables 格式输出,排除按钮