Promise 导出表格到Excel
function getTableData(item) { return new Promise(function(resolve, reject) { console.log(geturl + '/start/' + startdate + '/end/' + enddate + '/dizhi/' + item) $.post(geturl + '/start/' + startdate + '/end/' + enddate + '/dizhi/' + item, { start: startdate, end: enddate }, function(data) { console.log(data) if(data.status === 200) { console.log(data) var time1 = Date.parse(new Date(startdate)); //开始日期 var time2 = Date.parse(new Date(enddate)); //结束日期 var nDays = Math.abs(parseInt((time2 - time1) / 1000 / 3600 / 24) + 1); //相差多少天 if(nDays > 31) { alert('你选择的时间超出了一个月内的范围,请重新选择') } else { $.each(data, function(index, item) { jr_liuliang = item.jr_liuliang lj_liuliang = item.lj_liuliang ss_liuliangmax = item.ss_liuliangmax ss_liuliangmin = item.ss_liuliangmin ss_liusumax = item.ss_liusumax ss_liusumin = item.ss_liusumin max = item.max min = item.min }); var dizhiArr = [8, 3, 5, 9, 6, 10, 4, 7, 11, 2] if(item == 12){ str += '<tr align="center"><td colspan="9">乐罗---统计</td></tr>'; }else if(item == 8){ str += '<tr align="center"><td colspan="9">官村---统计</td></tr>'; }else if(item == 3){ str += '<tr align="center"><td colspan="9">望楼---统计</td></tr>'; }else if(item == 5){ str += '<tr align="center"><td colspan="9">佛丰---统计</td></tr>'; }else if(item == 9){ str += '<tr align="center"><td colspan="9">利国中学---统计</td></tr>'; }else if(item == 6){ str += '<tr align="center"><td colspan="9">九所小学---统计</td></tr>'; }else if(item == 10){ str += '<tr align="center"><td colspan="9">中灶村---统计</td></tr>'; }else if(item == 4){ str += '<tr align="center"><td colspan="9">新庄---统计</td></tr>'; }else if(item == 7){ str += '<tr align="center"><td colspan="9">镜湖---统计</td></tr>'; }else if(item == 11){ str += '<tr align="center"><td colspan="9">水厂原水---统计</td></tr>'; }else if(item == 2){ str += '<tr align="center"><td colspan="9">水厂净水---统计</td></tr>'; } str += `<tr><td colspan="4">总水量:${jr_liuliang} m³</td><td colspan="5">累计水量:${lj_liuliang} m³</td></tr>`; str += `<tr><td colspan="4">最大瞬时流量:${ss_liuliangmax} m³/h</td><td colspan="5">最小瞬时流量:${ss_liuliangmin} m³/h</td></tr>`; str += `<tr><td colspan="4">最大瞬时流速:${ss_liusumax} m³/h</td><td colspan="5">最小瞬时流速:${ss_liusumin} m³/h</td></tr>`; str += `<tr><td colspan="4">最大压力:${max} Mpa</td><td colspan="5">最小压力:${min} Mpa</td></tr>`; resolve(str) } } else { reject('当前网络有问题,请重试'); } }).error(function(error) { reject('当前网络有问题,请重试'); }) }) } getTableData("12").then(function(str) { return getTableData("2") }).then(function(str) { return getTableData("8") }).then(function(str) { return getTableData("3") }).then(function(str) { return getTableData("5") }).then(function(str) { return getTableData("7") }).then(function(str) { return getTableData("9") }).then(function(str) { return getTableData("11") }).then(function(str) { return getTableData("10") }).then(function(str) { return getTableData("4") }).then(function(str) { return getTableData("6") }).then(function(str) { console.log(str) let worksheet = 'Sheet1' let uri = 'data:application/vnd.ms-excel;base64,'; //下载的表格模板数据 let template = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"> <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet> <x:Name>${worksheet}</x:Name> <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet> </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--> </head><body><table border="1">${str}</table></body></html>`; //通过创建a标签实现 var link = document.createElement("a"); uri = uri + window.btoa(unescape(encodeURIComponent(template))); link.href = uri; //对下载的文件命名 link.download = "管网运行报表.xls"; document.body.appendChild(link); link.click(); document.body.removeChild(link); }).catch(function(err) { alert(err) }) });