jqGrid数据导出

原文:http://blog.csdn.net/xiao_jun_0820/article/details/6622210


言归正传,说说jqGrid数据导出的实现,我也纳闷,JQGRID这么复杂的TABLE都做出来了,为啥就不能给我们这些懒人实现一个导出数据的方法呢,百度狗狗了很久都没找到,只能自己写了。下面就吧我写的JS共享出来

[javascript]  view plain copy
  1. function getXlsFromTbl(inTblId, inTblContainerId, title, rownumbers) {  
  2.     try {  
  3.         var allStr = "";  
  4.         var curStr = "";  
  5.         //alert("getXlsFromTbl");  
  6.         if (inTblId != null && inTblId != "" && inTblId != "null") {  
  7.             curStr = getTblData($('#' + inTblId), $('#' + inTblContainerId), rownumbers);  
  8.         }  
  9.         if (curStr != null) {  
  10.             allStr += curStr;  
  11.         }  
  12.         else {  
  13.             alert("你要导出的表不存在!");  
  14.             return;  
  15.         }  
  16.         var fileName = getExcelFileName(title);  
  17.         doFileExport(fileName, allStr);  
  18.     }  
  19.     catch (e) {  
  20.         alert("导出发生异常:" + e.name + "->" + e.description + "!");  
  21.     }  
  22. }  
  23. function getTblData(curTbl, curTblContainer, rownumbers) {  
  24.   
  25.     var outStr = "";  
  26.     if (curTbl != null) {  
  27.         var rowdata = curTbl.getRowData();  
  28.         var Lenr = 1;  
  29.   
  30.         for (i = 0; i < Lenr; i++) {  
  31.             //var Lenc = curTbl.rows(i).cells.length;  
  32.             var th;  
  33.             if (rownumbers == true) {  
  34.                 th = curTblContainer.find('TH:not(:first-child)');  
  35.             }  
  36.             else {  
  37.                 th = curTblContainer.find('TH');  
  38.             }  
  39.             th.each(function(index, element) {  
  40.                 //alert($(element).text());  
  41.                 //取得每行的列数  
  42.                 var j = index + 1;  
  43.                 var content = $(element).text();  
  44.                 //alert(j + "|" + content);  
  45.                 outStr += content + "\t";  
  46.                 //赋值  
  47.   
  48.             });  
  49.             outStr += "\r\n";  
  50.         }  
  51.         var tmp = "";  
  52.         for (i = 0; i < rowdata.length; i++) {  
  53.             var row = eval(rowdata[i]);  
  54.             for (each in row) {  
  55.                 outStr += row[each] + "\t";  
  56.             }  
  57.             outStr += "\r\n";  
  58.         }  
  59.   
  60.   
  61.     }  
  62.     else {  
  63.         outStr = null;  
  64.         alert(inTbl + "不存在!");  
  65.     }  
  66.     return outStr;  
  67. }  
  68. function getExcelFileName(title) {  
  69.     var d = new Date();  
  70.     var curYear = d.getYear();  
  71.     var curMonth = "" + (d.getMonth() + 1);  
  72.     var curDate = "" + d.getDate();  
  73.     var curHour = "" + d.getHours();  
  74.     var curMinute = "" + d.getMinutes();  
  75.     var curSecond = "" + d.getSeconds();  
  76.     if (curMonth.length == 1) {  
  77.         curMonth = "0" + curMonth;  
  78.     }  
  79.     if (curDate.length == 1) {  
  80.         curDate = "0" + curDate;  
  81.     }  
  82.     if (curHour.length == 1) {  
  83.         curHour = "0" + curHour;  
  84.     }  
  85.     if (curMinute.length == 1) {  
  86.         curMinute = "0" + curMinute;  
  87.     }  
  88.     if (curSecond.length == 1) {  
  89.         curSecond = "0" + curSecond;  
  90.     }  
  91.     var fileName = title + "_" + curYear + curMonth + curDate + "_"  
  92.             + curHour + curMinute + curSecond + ".csv";  
  93.     //alert(fileName);   
  94.     return fileName;  
  95. }  
  96. function doFileExport(inName, inStr) {  
  97.     var xlsWin = null;  
  98.     if (!!document.all("HideFrm")) {  
  99.         xlsWin = HideFrm;  
  100.     }  
  101.     else {  
  102.         var width = 6;  
  103.         var height = 4;  
  104.         var openPara = "left=" + (window.screen.width / 2 - width / 2)  
  105.                 + ",top=" + (window.screen.height / 2 - height / 2)  
  106.                 + ",scrollbars=no,width=" + width + ",height=" + height;  
  107.         xlsWin = window.open("""_blank", openPara);  
  108.     }  
  109.     xlsWin.document.write(inStr);  
  110.     xlsWin.document.close();  
  111.     xlsWin.document.execCommand('Saveas'true, inName);  
  112.     xlsWin.close();  
  113. }   

用法是这样的,HTML的BODY中必须有这些元素

[html]  view plain copy
  1. <iframe id="HideFrm" style="display: none"></iframe>  
  2.   
  3. <div id="div_list">  
  4.         <table id="list4">  
  5.         </table>  
  6. </div>  
  7. <button id="export" value="导出">导出</button> 
[html]  view plain copy
  1. 那个iframe可要可不要,不要的话导出的时候会弹出一个网页窗口,要的话比较有好一点,反正是display: none的。table是你要转换为jqGrid的,必须要有一个DIV包裹住这个TABLE,因为导出中要取TABLE的列名要用到。然后对button写一个click事件调用getXlsFromTbl这个方法执行导出就好了  
[javascript]  view plain copy
  1. $('#export').click(function() {  
  2.                 var title = "供应信息";  
  3.                 getXlsFromTbl('list4''div_list', title, true)  
  4.             });  
[html]  view plain copy
  1. getXlsFromTbl有四个参数:第一个参数是要转换成JQGRID的table的ID,第二个参数是包裹这个table的DIV的ID,第三个是用来拼接导出文件名的,第四个参数是指示是否JQGRID显示了rownumbers,就是最前面那一串序号123456什么的。如果你的JQGRID参数设置了rownumber:true,那这边参数就填true,反之同理,否则导出的的文件列会对歪一列. 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值