需求:
数据表格按分页显示,每页只能显示10条数据,导出按钮也只能导出这10条,需要导出所有数据
导出的数据中,如果有身份证号,会变成科学计数法
数据库中的性别是1和2,导出时显示男和女
解决方案一:参考:https://www.cnblogs.com/yuanshen/p/11165223.html
1.
<table id="table1" lay-filter="table1"></table> <div style="display: none;"><table id="table2" lay-filter="table2"></table></div>
数据表格table1正常显示分页数据,table2用来导出所有数据,并设置隐藏
table1在初始化时,指定自定义导出按钮,注意:如果自定义了按钮没有正常显示,说明layui版本过低,请去官网下载最新版,我使用的layui版本是2.5.6,如下:
,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板 ,defaultToolbar: [{ //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可 title: '导出所有信息(按专业筛选)' ,layEvent: 'exports1' ,icon: 'layui-icon-export' }, { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可 title: '导出所有信息(已缴费)' ,layEvent: 'exports2' ,icon: 'layui-icon-template-1' }]
table2的如下:
//导出表格配置 table.render({ elem: '#table2', id: 'exportTable', title: '导出的文件名', url: 'ajaxstudents.php' , cols: [[ //表头 {field: 'sid', title: '编号', align:'center', width:80} ,{field: 'realname', title: '姓名', align:'center', width:130} ,{field: 'identity', title: '身份证号', align:'center', minWidth: 330, width:180} // ,{title: '性别', width:130, align:'center', toolbar: '#toolbar2'} ,{field: 'sex', title: '性别' } ,{field: 'mname', title: '报考专业'} ]] });
监听table1的导出按钮,代码如下:
table.on('toolbar(table1)', function(obj){ // console.log("print"); var checkStatus = table.checkStatus(obj.config.id); switch(obj.event){ case 'exports1': $.ajax({ url: "ajaxstudentsall.php", type: 'post', data: { type: 1 }, async: false, dataType: 'json', success: function (res) { //使用table.exportFile()导出数据 table.exportFile('exportTable', res.data, 'xls'); } }); // table.exportFile('exportTable', res.data, 'xls'); break; } });
2.在后端代码中,读取身份证号的后面添加 制表符
	
如:
$strjson.='"identity":"'.$rstInfo["identity"].'	",';
效果如下图:
网上有的解决方案是在后面添加空格
导出的数据后面就会多一个空格,功能虽然实现了,但不完美
3.后端修改代码
$strjson.='"sex":"'.($rstInfo["sex"]=="1"?"男":"女").'",';
解决方案二:
直接在sql语句中设置:
select concat(identity,'	') as identity,if(sex=1,'男','女') as sex from table1