方法一:其实layui表格自带的工具就可以导出表格
但是如果我们要自己自定义按钮导出数据
方法二:下载excel.js文件 https://fly.layui.com/extend/excel/
下载后引入文件,
<button type="button" lay-submit="" class="layui-btn layui-btn-warm" id="exportExcel" name="exportExcel">
<i class="layui-icon"></i>导出Excel</button>
layui.config({//配置并导入excel插件
base: '${base}/scripts/layui/layui_exts/'
}).use([ 'excel', 'layer'], function() {
var $ = layui.$;
var layer = layui.layer;
var excel = layui.excel;
$('#exportExcel').on('click', function(){
// 模拟从后端接口读取需要导出的数据
$.ajax({
url: '${path}/spPatTreat/queryDoctorDetailTreat.action?doctorCode='+parentData.doctorCode+'&startDate='+parentData.dtStart+'&endDate='+parentData.dtEnd
,dataType: 'json'
,success(res) {
var data = res;
console.log(res);
// 重点!!!如果后端给的数据顺序和映射关系不对,请执行梳理函数后导出
data = excel.filterExportData(data, [
'createTime'
,'deptName'
,'patCode'
,'patName'
,'sex'
,'age'
,'docRegType'
,'doctorName'
,'patDiag'
,'registerId'
,'outpatID'
]);
// 重点2!!!一般都需要加一个表头,表头的键名顺序需要与最终导出的数据一致
data.unshift({ createTime: "就诊时间", deptName: "科室",patCode: '就诊卡号', patName: "患者姓名",sex: "性别",age: '年龄', docRegType: "就诊类型",doctorName: "接诊医生",patDiag: '诊断', registerId: "挂号流水号",outpatID: "就诊号"});
var timestart = Date.now();
excel.exportExcel(data, '医生详细坐诊记录--'+parentData.doctorName+'.xlsx', 'xlsx');
// var timeend = Date.now();
// var spent = (timeend - timestart) / 1000;
// layer.alert('单纯导出耗时 '+spent+' s');
}
,error() {
layer.alert('获取数据失败,请检查是否部署在本地服务器环境下');
}
});
});
});