工具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);//數據過多時使用 } } }); } }); }