js導出excel


工具js:

 

//url 導出數據的獲取地址 var url="config/getexportServerData.action";
    //parameter 導出數據的篩選條件 '{serverInfo.role:role,serverInfo.ip:ip}'
    //fileName 自定義導出文件名 '服務器配置'
    //header 自定義表格標題 
    //headerKey 設置表格標題對應的導出數據中的key值 
//serverPage.js 有例子
//messager 確認導出的提示語
function exportExcel(url,parameter,fileName,header,headerKey,ifHandleValue,messager){
     $.messager.confirm('系統提示', messager, function(r){
          if (r) {
          $.ajax({
            url:url,
            type:"POST",
            data:{parameter},
            timeout:180000,
            success:function(data){
              if(data){
                  // 先轉化json
                var arrData = JSON.parse(data);
                JSONToExcelConvertor(arrData, fileName, header,headerKey,ifHandleValue)
              }
            }
          });
            
          }
      });
}
function exportRowsExcel(url,parameter,fileName,header,headerKey,ifHandleValue,messager){
     $.messager.confirm('系統提示', messager, function(r){
          if (r) {
          $.ajax({
            url:url,
            type:"POST",
            data:{parameter},
            timeout:180000,
            success:function(data){
              if(data){
                  // 先轉化json
                var arrData = JSON.parse(data);
                JSONToExcelConvertor(arrData.rows, fileName, header,headerKey,ifHandleValue)
              }
            }
          });
            
          }
      });
}
/**
 * JSONData json字符串List<Map> 
 * fileName 自定義導出文件名 '服務器配置'var fileName="服務器配置";
 * header 自定義表格標題 var header=new Array("IP","服務器名","角色","監控模版","監控狀態","郵件","創建業務","機櫃","地區","備注");
 * headerKey 設置表格標題對應的導出數據中的key值 var headerKey=new Array("ip","machinename","rolename","template_name","mstatus","isemail","isbusiness","cabinet","region","remark");
 * ifHandleValue 是否需要處理表格內數據 0 不需要,1 需要(需要自定義handleValue(headerKey,value)函數設置自定義表格內容)
 */
function JSONToExcelConvertor(arrData, FileName, header,headerKey,ifHandleValue) {
               
                var excel = '<table>';
                // 設置表頭
                var row = "<tr>";
                for (var i = 0, l = header.length; i < l; i++) {
                    row += "<td>" + header[i] + '</td>';
                }
                // 換行
                excel += row + "</tr>";
                // 設置數據
                for (var i = 0; i < arrData.length; i++) {
                    var row = "<tr>";
                    for (var j = 0; j < headerKey.length; j++) {
                                    var key=headerKey[j];
                        var value = (arrData[i][key]=== ""||null === arrData[i][key]||undefined === arrData[i][key]) ? "" : arrData[i][key];
                            if(ifHandleValue==1){
                                        //key 為自定義表格標題對應的key值,value值為當前要處理的數據
                                        value = handleValue(key,value);
                                    }
                                    row += '<td>' + value + '</td>';
                    }
                    excel += row + "</tr>";
                }
                excel += "</table>";

                var excelFile = "<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'>";
                excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';
                excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel';
                excelFile += '; charset=UTF-8">';
                excelFile += "<head>";
                excelFile += "<!--[if gte mso 9]>";
                excelFile += "<xml>";
                excelFile += "<x:ExcelWorkbook>";
                excelFile += "<x:ExcelWorksheets>";
                excelFile += "<x:ExcelWorksheet>";
                excelFile += "<x:Name>";
                excelFile += "{worksheet}";
                excelFile += "</x:Name>";
                excelFile += "<x:WorksheetOptions>";
                excelFile += "<x:DisplayGridlines/>";
                excelFile += "</x:WorksheetOptions>";
                excelFile += "</x:ExcelWorksheet>";
                excelFile += "</x:ExcelWorksheets>";
                excelFile += "</x:ExcelWorkbook>";
                excelFile += "</xml>";
                excelFile += "<![endif]-->";
                excelFile += "</head>";
                excelFile += "<body>";
                excelFile += excel;
                excelFile += "</body>";
                excelFile += "</html>";
                var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelFile);
                var link = document.createElement("a");
                link.href = uri;
                link.style = "visibility:hidden";
                link.download = FileName + ".xls";
                document.body.appendChild(link);
                link.click();
                document.body.removeChild(link);
            }
//數據量大時用這個快
function exportCSV(arrData, fileName, header,headerKey){
    var str = header + '\n';
    for(var i = 0; i < arrData.length; i++){
        for (var j = 0; j < headerKey.length; j++) {
            var key = headerKey[j];
            if(key == 'createtime'){//解決日期問題 導出時間格式為yyyy-MM-dd HH:mm:ss 
                str += '\t';
                str += arrData[i][key] + '\t,';
            }else{
                str += arrData[i][key] + ',';
            }
        }
        str += '\n';
//        str += i.toString()+',1234567890123456789\t,張三李四王五趙六,bbbb,\n'
    }
//    var blob = new Blob([str], {type: "text/plain;charset=utf-8"});                  //text
    var blob = new Blob([str], {type: "application/vnd.ms-excel;charset=utf-8"});      //csv
    //解決中文亂碼問題
    blob =  new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});  
    object_url = window.URL.createObjectURL(blob); 
    var link = document.createElement("a");
    link.href = object_url;
    link.download =  fileName;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);                     
}

 

調用1:

//導出Excel
function exportServerData(){
        var ip = $("#ip").val().trim();
        var deviceType = $("#deviceType").combobox('getValue');
        var device = $("#device").combobox('getValue');
        var alarmLevel = $("#alarmLevel").combobox('getValue');
        var starttime = $("#starttime").datetimebox("getValue");
        var endtime = $("#endtime").datetimebox("getValue");
        if(starttime == ""){
            starttime = getNowFormatDate1();
        }
        if(ip.trim().length == 0){
            ip = '';
        }
        if(alarmLevel == -1){
            alarmLevel = '';
        }
        if(device.trim() == "所有的"){
            device = '';
        }
        var url="report/getAlarmCensusList.action";
        var fileName="報警查詢統計";
        $.messager.confirm('系統提示', "您確定要導出表單數據嗎?", function(r){
              if (r) {
              $.ajax({
                url:url,
                type:"POST",
                data:{"ip":ip,'deviceType':deviceType,'device':device,'alarmLevel':alarmLevel,
                    'starttime':starttime,'endtime':endtime},
                timeout:180000,
                success:function(data){
                  if(data){
                      var arrData = JSON.parse(data);
                      var header=new Array("服務器名","IP","監控類型 ","監控項 ","報警方式 ","報警值 ","備注 ","報警時間 ");
                      var headerKey=new Array("machinename","ip","dtname","dname","alarm_level","alarm_value","remark","alarm_time");
                      JSONToExcelConvertor(arrData.rows, fileName, header,headerKey,1)
                  }
                }
              });
              }
          });
}
function handleValue(headerKey,value){
    if(headerKey === "alarm_level"){
        if(value === "1"){
            value="預警";
        }else if(value === "2"){
            value = "告警";
        }
    }
    return value;
}

調用2:

// 導出Excel
function exportData() {
    var ip = $("#hostIp").textbox("getValue").trim();
    if (ip == '') {
        alert("請輸入IP!");
        return;
    }
    var start = $("#start").datetimebox("getValue");
    if (start == '') {
        alert("請輸入開始時間!");
        return;
    }
    var end = $("#end").datetimebox("getValue");
    if (end == '') {
        alert("請輸入終止時間!");
        return;
    }
    var url = "report/getAlarmSystem.action";
    var fileName = ip + "虛機流量展示";
    $.messager.confirm('系統提示', "您確定要導出數據嗎?", function(r) {
        if (r) {
            $.ajax( {
                url : "report/getvirtual.action",
                type : "POST",
                data : {
                    'ip' : ip,
                    'startime' : start,
                    'endtime' : end,
                },
                timeout : 180000,
                async : true,
                success : function(data) {
                    if (data) {
                        var arrData = JSON.parse(data);
                        var header = new Array('外網進流量','外網出流量','內網進流量','內網出流量','報警流量','CPU','內存','時間');
                        var headerKey = new Array('net','net_out','lnet','lnet_out','net_avg','cpu','memory','createtime');
                        JSONToExcelConvertor(arrData, fileName, header,headerKey, 0)
                    }
                }
            });

        }
    });
}

調用3:

// 導出Excel
function exportData() {
    var ip = $("#hostIp").textbox("getValue").trim();
    if (ip == '') {
        alert("請輸入IP!");
        return;
    }
    var start = $("#start").datetimebox("getValue");
    if (start == '') {
        alert("請輸入開始時間!");
        return;
    }
    var end = $("#end").datetimebox("getValue");
    if (end == '') {
        alert("請輸入終止時間!");
        return;
    }
    var url = "report/getAlarmSystem.action";
    var fileName = ip + "虛機流量展示";
    $.messager.confirm('系統提示', "您確定要導出數據嗎?", function(r) {
        if (r) {
            $.ajax( {
                url : "report/getvirtual.action",
                type : "POST",
                data : {
                    'ip' : ip,
                    'startime' : start,
                    'endtime' : end,
                },
                timeout : 180000,
                async : true,
                success : function(data) {
                    if (data) {
                        var arrData = JSON.parse(data);
//                        var header = new Array('外網進流量','外網出流量','內網進流量','內網出流量','報警流量','CPU','內存','時間');
                        var header = new Array('外網進流量,外網出流量,內網進流量,內網出流量,報警流量,CPU,內存,時間');
                        var headerKey = new Array('net','net_out','lnet','lnet_out','net_avg','cpu','memory','createtime');
//                        JSONToExcelConvertor(arrData, fileName, header,headerKey, 0)
                        exportCSV(arrData, fileName, header,headerKey);//數據過多時使用
                    }
                }
            });

        }
    });
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM