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)
        })
    });

 

posted @ 2020-07-28 15:08  懒噗噗的博客小家  阅读(272)  评论(0编辑  收藏  举报