在前端操作的时候会经常使用到datatale.js进行一些数据表格的展示,通过Button扩展按钮可以将datatable表格数据导出到excel文档。
{#datatable表格数据导出,tables为初始化的DataTable对象名称#}
new $.fn.dataTable.Buttons( tables, {
buttons: [
{
extend: "excel",
text: "导出button按钮名称",
className: "btn-sm",
filename: "导出文件名",
exportOptions: {
//打印的列
columns: [ 1, 3, 4,7,8,9,10,11,12],
modifier: {
page: 'all'
},
},
},
]
});
tables.buttons().container().appendTo( $('.col-sm-6:eq(1)', tables.table().container() ) );
再导出的数据中如果存在身份证信息或者长的号码字符串导出到excel中会出现采用科学记数法,尾部超过15位的数字全为0的情况:
在exportoptions中增加customizeData属性保证长数据能正常导出:
customizeData: function ( data ) {
for (var i=0; i<data.body.length; i++){
for (var j=0; j<data.body[i].length; j++ ){
data.body[i][j] = '\u200C' + data.body[i][j];
}
}
},
整个完整代码如下:
{#datatable表格数据导出,tables为初始化的DataTable对象名称#}
new $.fn.dataTable.Buttons( tables, {
buttons: [
{
extend: "excel",
text: "导出button按钮名称",
className: "btn-sm",
filename: "导出文件名",
exportOptions: {
//打印的列
columns: [ 1, 3, 4,7,8,9,10,11,12],
modifier: {
page: 'all'
},
//保证长数字能正常导出
customizeData: function ( data ) {
for (var i=0; i<data.body.length; i++){
for (var j=0; j<data.body[i].length; j++ ){
data.body[i][j] = '\u200C' + data.body[i][j];
}
}
},
},
},
]
});
tables.buttons().container().appendTo( $('.col-sm-6:eq(1)', tables.table().container() ) );