2018年4月6日
运营部的妹子们又来需求了,查了网上资料,很快的完成了,虽然只是基础;
实现思路:
使用datatable的插件--buttons;
官方文档:https://datatables.net/reference/button/excel
1)datatable的数据显示不需要我多说了,各位都懂的;
2)加入buttons插件,其实分两步:一是导入js;二是编写js;(又是多余的废话。。)
导入js:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script> <script src="https://cdn.datatables.net/buttons/1.5.1/js/dataTables.buttons.min.js"></script> <script src="https://cdn.datatables.net/buttons/1.5.1/js/buttons.html5.min.js"></script>
编写js:
buttons 部分 :
dom: 'Bfrtip', "buttons": [{ 'extend': 'excel', 'text': '导出为Excel统计表',//定义导出excel按钮的文字 'className': 'btn btn-primary', //按钮的class样式 'exportOptions': { 'modifier': { 'page': 'all' } } }],
datatable 部分:
setTable: function(){ table = $("#player-list-table").DataTable({ "bLengthChange":false, "bFilter":false, "bDeferRender":true, "bPaginate":true, "bProcessing":true, "bSort":true, "ordering": true, "bAutoWidth":false, "bSortClasses":false, "bStateSave":false, "iDisplayLength" : 20, "iDisplayStart" : 0, "bOrdering": true,//全局禁用排序 "order": [[ 0, "desc" ]], //0:根据第一列排序,asc:表示升序。bSort需要设置为true "oLanguage": { "sProcessing": "处理中...", "sLengthMenu": "显示 _MENU_ 项结果", "sZeroRecords": "没有匹配结果", "sInfo": "显示第 _START_ 至 _END_ 条记录,共 _TOTAL_ 条记录", "sInfoEmpty": "无记录显示", "sSearch": "搜索:", "sUrl": "", "sEmptyTable": "表中数据为空", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上一页", "sNext": "下一页", "sLast": "末页" } }, dom: 'Bfrtip', "buttons": [{ 'extend': 'excel', 'text': '导出为Excel统计表',//定义导出excel按钮的文字 'className': 'btn btn-primary', //按钮的class样式 'exportOptions': { 'modifier': { 'page': 'all' } } }], "ajax":{ "type":"POST", "url":"${contextPath}/rechargeManager/getRechargeList", "data":function(d){ /* d.roleId = $("#search-roleId").val(); */ /* d.packageId = $("#search-packageId").val().trim(); */ var allPackageIds = $("input[name='packageId']:checked"); var allChannelIds = $("input[name='channelId']:checked"); var packageIds=""; var channelIds=""; for(var i = 0;i < allPackageIds.length;i++){ packageIds = packageIds + $(allPackageIds[i]).val()+","; } for(var j = 0;j < allChannelIds.length;j++){ channelIds = channelIds + $(allChannelIds[j]).val()+","; } d.packageIds = packageIds; d.channelIds = channelIds; d.startTime = new Date($("#search-startTime").val().trim()).getTime(); d.endTime = new Date($("#search-endTime").val().trim()).getTime(); }, }, "aoColumns":[ /* { "mData" : "roleId", "orderable" : false, // 禁用排序 "sWidth" : "50px", "render" : function(data, type, full, meta) { var data = "<div class='tabTableTipLine'><span class='text-color-1e9'>"+full.robotId+"</span><br/><span class='text-color-1e9'>"+full.roleId+"</span></div>"; return data; } }, */ { "mData" : "date", "orderable" : false, // 禁用排序 "sWidth" : "50px", "sClass" : "canHidden", }, { "mData" : "packageId", "orderable" : false, // 禁用排序 "sWidth" : "50px", "sClass" : "canHidden", }, { "mData" : "registerNum", "orderable" : false, // 禁用排序 "sWidth" : "50px", "sClass" : "canHidden", /* "render" : function(data, type, full, meta) { data = "<div class='tabTableTipLine'><span class='text-color-1e9'>"+full.roleName+"</span>"; return data; }*/ }, { "mData" : "newRechargeNum", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden newRechargeTr", }, { "mData" : "newRechargeAmount", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden newRechargeTr", }, { "mData" : "newRechargeAvg", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden newRechargeTr", }, { "mData" : "totalRechargeNum", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden totalRechargeTr", }, { "mData" : "totalRechargeAmount", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden totalRechargeTr", }, { "mData" : "totalRechargeAvg", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden totalRechargeTr", }, { "mData" : "oldRechargeNum", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden oldRechargeTr", }, { "mData" : "oldRechargeAmount", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden oldRechargeTr", }, { "mData" : "oldRechargeAvg", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden oldRechargeTr", }, { "mData" : "logicNewRechargeNum", "orderable" : false, // 禁用排序 "sWidth" : "100px", "sClass" : "canHidden totalRechargeTr", }, ] }); },
如此一来便实现了需求。
1)先看页面效果:
2)excel导出效果:
更多参考:
1. https://blog.csdn.net/nihaoqiulinhe/article/details/53940475
2. https://blog.csdn.net/liuyuqin1991/article/details/74980616#t3
3. https://blog.csdn.net/zxf1242652895/article/details/73469500