2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > layui动态加载复杂表头 前端导出Excel格式数据。

layui动态加载复杂表头 前端导出Excel格式数据。

时间:2019-12-02 22:55:03

相关推荐

layui动态加载复杂表头 前端导出Excel格式数据。

动态生成header,此场景用于表头从数据库中读取便于后续更改表头字段。前端导出用是开源插件table2excel.js,此导出有局限性,只能导出doom元素中的本页的数据,如果是分页的数据不太适用。

返回二元数组,后台构建相应的数据格式:

前端处理返回的数据,push到一个空数组中就可以组成一个动态的多级表头。

var header= [];var header1= [{title: "编号",type: "numbers",align: "center",width: 80,rowspan: 2}, {title: "姓名",field: 'name',align: "center",width: 120,rowspan: 2}];var header2= [];$.ajax({type: "post",url: "",dataType:"json",async:false,success: function (data) {console.log(data)if (data.code === 0){var djs=data.data[0][0];console.log(djs)header1.push({align: 'center', title: djs, colspan:3});var sdarr=["基数"];var newArr = delArr(sdarr,data.data[0]);//只需要一个三列表头,其余是二列的。console.log(newArr);$.each(newArr, function (index, obj) {//console.log(obj)header1.push({align: 'center', title: obj, colspan:2});});$.each(data.data[1], function (index, obj) {//拼接成官网所需要的数组header2.push({field: obj.field1, title: obj.title1 });header2.push({field: obj.field2, title: obj.title2 });header2.push({field: obj.field3, title: obj.title3 });});$.each(data.data[2], function (index, obj) {//拼接成官网所需要的数组header2.push({field: obj.field1, title: obj.title1 });header2.push({field: obj.field2, title: obj.title2 });});$.each(data.data[3], function (index, obj) {//拼接成官网所需要的数组header2.push({field: obj.field1, title: obj.title1 });header2.push({field: obj.field2, title: obj.title2 });});$.each(data.data[4], function (index, obj) {//拼接成官网所需要的数组header2.push({field: obj.field1, title: obj.title1 });header2.push({field: obj.field2, title: obj.title2 });});$.each(data.data[5], function (index, obj) {//拼接成官网所需要的数组header2.push({field: obj.field1, title: obj.title1 });header2.push({field: obj.field2, title: obj.title2 });});header1.splice(10,0,, {title: '操作',toolbar: '#barDemo',fixed:"right",width: 80,rowspan: 2});//固定操作列header.push(header1);header.push(header2);console.log(header);//所需的表头push到一个总的数组里}}});var table2Excel;let TableC= table.render({id: 'demo',elem: '#demo', url: '' //数据接口, cellMinWidth: 80, limit: 10//每页默认数, limits: [10, 20, 30, 40, 50, 100], page: {//支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'] //自定义分页布局, curr: 1 //设定初始在第 1 页},request: {pageName: "page",limitName: "rows"},response: {statusCode: 0,countName: 'total', //规定数据总数的字段名称,默认:countdataName: 'data' //规定数据列表的字段名称,默认:data},loading:true, //是否显示加载条(默认:true)。如果设置 false,则在切换分页时,不会出现加载条。该参数只适用于 url 参数开启的方式title:"记录表", ////cellMinWidth:60, //全局定义所有常规单元格的最小宽度(默认:60),一般用于列宽自动分配的情况。其优先级低于表头参数中的 minWidthtext:{none: '暂无相关数据' //默认:无数据。注:该属性为 layui 2.2.5 开始新增}, //自定义文本,如空数据时的异常提示等。注:layui 2.2.5 开始新增。autoSort:true,skin:"row", //用于设定表格风格,若使用默认风格不设置该属性即可line (行边框风格) row (列边框风格) nob (无边框风格)even:true, //若不开启隔行背景,不设置该参数即可//size:"lg", //用于设定表格尺寸,若使用默认尺寸不设置该属性即可parseData: function(res) {var ss = {data: res.rows,code: 0,total: res.total,}return ss},done:function(){console.log("数据渲染完了!")table2Excel = new Table2Excel();table2Excel.append($("#demo"));//遍历页面上layui生成的div,抓取里面的格式与数据,来手动append到table中,再控制该table隐藏,来为导出做准备。//console.log(table2Excel.append($("#demo")))}, cols: header});// 导出excel点击事件$('#exportElemId').click(function(){let fileName = 'XXX-0xxxx';table2Excel.exportLayTable($('#demo'),fileName);});

百度网盘:table2Excel.js

提取码:5u9h

使用方法:

上面js已经有了,数据表格渲染完毕后,在done函数中做相关遍历操作

var table2Excel ;table.render({elem: '#demo',...done: function (res, curr, count) {table2Excel = new Table2Excel();table2Excel.append($("#tableId"));}) });// 导出excel点击事件$('#exportElemId').click(function(){let fileName = 'XXX-0xxxx';table2Excel.exportLayTable($('#tableId'),fileName);});

导出效果:

参考:/zhiyingshenjian/article/details/85004517

/weixin_45237517/article/details/100119628

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。