1 /* ======================导出excel=========================== */ 2 3 function getXlsFromTbl(inTblId, inTblContainerId, title, rownumbers) { 4 5 try { 6 7 var allStr = ""; 8 9 var curStr = ""; 10 11 //alert("getXlsFromTbl"); 12 13 if (inTblId != null && inTblId != "" && inTblId != "null") { 14 15 curStr = getTblData($(\'#\' + inTblId), $(\'#\' + inTblContainerId), rownumbers); 16 17 //alert(curStr); 18 19 } 20 21 if (curStr != null) { 22 23 allStr += curStr; 24 25 } 26 27 else { 28 29 alert("你要导出的表不存在!"); 30 31 return; 32 33 } 34 35 var fileName = getExcelFileName(title); 36 37 doFileExport(fileName, allStr); 38 39 } 40 41 catch (e) { 42 43 alert("导出发生异常:" + e.name + "->" + e.description + "!"); 44 45 } 46 47 } 48 49 function getTblData(curTbl, curTblContainer, rownumbers) { 50 51 52 53 var outStr = ""; 54 55 if (curTbl != null) { 56 57 var rowdata = curTbl.getRowData(); 58 59 var Lenr = 1; 60 61 62 63 for (i = 0; i < Lenr; i++) { 64 65 //var Lenc = curTbl.rows(i).cells.length; 66 67 var th; 68 69 if (rownumbers == true) { 70 71 th = curTblContainer.find(\'TH:not(:first-child)\'); 72 73 } 74 75 else { 76 77 th = curTblContainer.find(\'TH\'); 78 79 } 80 81 th.each(function(index, element) { 82 83 //alert($(element).text()); 84 85 //取得每行的列数 86 87 var j = index + 1; 88 89 var content = $(element).text(); 90 91 //alert(j + "|" + content); 92 93 outStr += content + "\t"; 94 95 //赋值 96 97 98 99 }); 100 101 outStr += "\r\n"; 102 103 } 104 105 var tmp = ""; 106 107 for (i = 0; i < rowdata.length; i++) { 108 109 var row = eval(rowdata[i]); 110 111 for (each in row) { 112 113 outStr += row[each] + "\t"; 114 115 } 116 117 outStr += "\r\n"; 118 119 } 120 121 122 123 124 125 } 126 127 else { 128 129 outStr = null; 130 131 alert(inTbl + "不存在!"); 132 133 } 134 135 return outStr; 136 137 } 138 139 function getExcelFileName(title) { 140 141 var d = new Date(); 142 143 var curYear = d.getYear(); 144 145 var curMonth = "" + (d.getMonth() + 1); 146 147 var curDate = "" + d.getDate(); 148 149 var curHour = "" + d.getHours(); 150 151 var curMinute = "" + d.getMinutes(); 152 153 var curSecond = "" + d.getSeconds(); 154 155 if (curMonth.length == 1) { 156 157 curMonth = "0" + curMonth; 158 159 } 160 161 if (curDate.length == 1) { 162 163 curDate = "0" + curDate; 164 165 } 166 167 if (curHour.length == 1) { 168 169 curHour = "0" + curHour; 170 171 } 172 173 if (curMinute.length == 1) { 174 175 curMinute = "0" + curMinute; 176 177 } 178 179 if (curSecond.length == 1) { 180 181 curSecond = "0" + curSecond; 182 183 } 184 185 var fileName = title + "_" + curYear + curMonth + curDate + "_" 186 187 + curHour + curMinute + curSecond + ".csv"; 188 189 //alert(fileName); 190 191 return fileName; 192 193 194 195 } 196 197 function doFileExport(inName, inStr) { 198 199 var xlsWin = null; 200 201 if (!!document.all("HideFrm")) { 202 203 xlsWin = HideFrm; 204 205 206 207 } 208 209 else { 210 211 var width = 6; 212 213 var height = 4; 214 215 var openPara = "left=" + (window.screen.width / 2 - width / 2) 216 217 + ",top=" + (window.screen.height / 2 - height / 2) 218 219 + ",scrollbars=no,width=" + width + ",height=" + height; 220 221 xlsWin = window.open("", "_blank", openPara); 222 223 } 224 225 226 227 xlsWin.document.write(inStr); 228 229 xlsWin.document.close(); 230 231 xlsWin.document.execCommand(\'Saveas\', true, inName); 232 233 xlsWin.close(); 234 235 }
必要标签
<iframe id="HideFrm" style="display: none"></iframe>
<div id="div_list">
<table id="list4">
</table>
</div>
<button id="export" value="导出">导出</button>
那个iframe可要可不要,不要的话导出的时候会弹出一个网页窗口,要的话比较有好一点,反正是display: none的。table是你要转换为jqGrid的,必须要有一个DIV包裹住这个TABLE,因为导出中要取TABLE的列名要用到。然后对button写一个click事件调用getXlsFromTbl这个方法执行导出就好了。
getXlsFromTbl有四个参数:第一个参数是要转换成JQGRID的table的ID,第二个参数是包裹这个table的DIV的ID,第三个是用来拼接导出文件名的,第四个参数是指示是否JQGRID显示了rownumbers,就是最前面那一串序号123456什么的。如果你的JQGRID参数设置了rownumber:true,那这边参数就填true,反之同理,否则导出的的文件列会对歪一列.