表格数据导出到excel

在系统开发中,经常会遇到要将一个表格数据导出到excel中,刚刚做完,把示例代码共享一下,话不多说直接上代码。

[html]  view plain  copy
  1. <!DOCTYPE html>    
  2. <html>    
  3. <head lang="en">    
  4.     <meta charset="UTF-8">    
  5.     <title>html 表格导出道</title>    
  6.     <link rel="stylesheet" type="text/css" href="css/bootstrap.css">  
  7.      
  8. </head>    
  9. <body>    
  10.     
  11. <div >    
  12.       
  13. </div>    
  14. <div id="myDiv">    
  15. <table id="tableExcel" width="100%" class="table table-hover" >    
  16.     <tr>    
  17.         <td colspan="5" align="center">html 表格导出道Excel</td>    
  18.     </tr>    
  19.     <tr>    
  20.         <td>列标题1</td>    
  21.         <td>列标题2</td>    
  22.         <td>类标题3</td>    
  23.         <td>列标题4</td>    
  24.         <td>列标题5</td>    
  25.     </tr>    
  26.     <tr>    
  27.         <td>aaa</td>    
  28.         <td>bbb</td>    
  29.         <td>ccc</td>    
  30.         <td>ddd</td>    
  31.         <td>eee</td>    
  32.     </tr>    
  33.     <tr>    
  34.         <td>AAA</td>    
  35.         <td>BBB</td>    
  36.         <td>CCC</td>    
  37.         <td>DDD</td>    
  38.         <td>EEE</td>    
  39.     </tr>    
  40.     <tr>    
  41.         <td>FFF</td>    
  42.         <td>GGG</td>    
  43.         <td>HHH</td>    
  44.         <td>III</td>    
  45.         <td>JJJ</td>    
  46.     </tr>    
  47. </table>  
  48. <button type="button" class="btn btn-primary center-block" onclick="method5('tableExcel')">导出Excel</button>    
  49. <!-- <input type="file" class="btn btn-primary center-block" value="请选择输出路径"> -->  
  50. <script type="text/javascript" src="js/jquery-3.1.0.js"></script>    
  51.  <script language="JavaScript" type="text/javascript">    
  52.         //第五种方法    
  53.         var idTmr;    
  54.         function  getExplorer() {    
  55.             var explorer = window.navigator.userAgent ;    
  56.             //ie    
  57.             if (explorer.indexOf("MSIE") >= 0) {    
  58.                 return 'ie';    
  59.             }    
  60.             //firefox    
  61.             else if (explorer.indexOf("Firefox") >= 0) {    
  62.                 return 'Firefox';    
  63.             }    
  64.             //Chrome    
  65.             else if(explorer.indexOf("Chrome") >= 0){    
  66.                 return 'Chrome';    
  67.             }    
  68.             //Opera    
  69.             else if(explorer.indexOf("Opera") >= 0){    
  70.                 return 'Opera';    
  71.             }    
  72.             //Safari    
  73.             else if(explorer.indexOf("Safari") >= 0){    
  74.                 return 'Safari';    
  75.             }    
  76.         }    
  77.         function method5(tableid) {    
  78.             if(getExplorer()=='ie')    
  79.             {    
  80.                 var curTbl = document.getElementById(tableid);    
  81.                 var oXL = new ActiveXObject("Excel.Application");    
  82.                 var oWB = oXL.Workbooks.Add();    
  83.                 var xlsheet = oWB.Worksheets(1);    
  84.                 var sel = document.body.createTextRange();    
  85.                 sel.moveToElementText(curTbl);    
  86.                 sel.select();    
  87.                 sel.execCommand("Copy");    
  88.                 xlsheet.Paste();    
  89.                 oXL.Visible = true;    
  90.     
  91.                 try {    
  92.                     var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");    
  93.                 } catch (e) {    
  94.                     print("Nested catch caught " + e);    
  95.                 } finally {    
  96.                     oWB.SaveAs(fname);    
  97.                     oWB.Close(savechanges = false);    
  98.                     oXL.Quit();    
  99.                     oXL = null;    
  100.                     idTmr = window.setInterval("Cleanup();", 1);    
  101.                 }    
  102.     
  103.             }    
  104.             else    
  105.             {    
  106.                 tableToExcel(tableid)    
  107.             }    
  108.         }    
  109.         function Cleanup() {    
  110.             window.clearInterval(idTmr);    
  111.             CollectGarbage();    
  112.         }    
  113.         var tableToExcel = (function() {    
  114.             var uri = 'data:application/vnd.ms-excel;base64,',    
  115.                     template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',    
  116.                     base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },    
  117.                     format = function(s, c) {    
  118.                         return s.replace(/{(\w+)}/g,    
  119.                                 function(m, p) { return c[p]; }) }    
  120.             return function(table, name) {    
  121.                 if (!table.nodeType) table = document.getElementById(table)    
  122.                 var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}    
  123.                 window.location.href = uri + base64(format(template, ctx))    
  124.             }    
  125.         })()    
  126.     
  127.     </script>    
  128. </div>    
  129. </body>    
  130. </html>    

但这个示例有两个缺陷,一是导出的表格单元格边框没有样式,二是不能自定义表格名称,所有又进行了改进,以下是改进版本的代码参考。

[html]  view plain  copy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title></title>  
  6.     <link rel="stylesheet" type="text/css" href="css/bootstrap.css">  
  7. </head>  
  8. <body>  
  9.     <table id="tableExcel" width="100%" class="table table-hover" >    
  10.     <tr>    
  11.         <td colspan="5" align="center">html 表格导出道Excel</td>    
  12.     </tr>    
  13.     <tr>    
  14.         <td>列标题1</td>    
  15.         <td>列标题2</td>    
  16.         <td>类标题3</td>    
  17.         <td>列标题4</td>    
  18.         <td>列标题5</td>    
  19.     </tr>    
  20.     <tr>    
  21.         <td>aaa</td>    
  22.         <td>bbb</td>    
  23.         <td>ccc</td>    
  24.         <td>ddd</td>    
  25.         <td>eee</td>    
  26.     </tr>    
  27.     <tr>    
  28.         <td>AAA</td>    
  29.         <td>BBB</td>    
  30.         <td>CCC</td>    
  31.         <td>DDD</td>    
  32.         <td>EEE</td>    
  33.     </tr>    
  34.     <tr>    
  35.         <td>FFF</td>    
  36.         <td>GGG</td>    
  37.         <td>HHH</td>    
  38.         <td>III</td>    
  39.         <td>JJJ</td>    
  40.     </tr>    
  41. </table>  
  42.     <a id="dlink"  style="display:none;"></a>  
  43. <input type="text" name="" value="请输入文件名" class="center-block form-control" style="margin-bottom: 20px; text-align: center" id="submit" onclick="submt()">      
  44. <input type="button" class="btn btn-primary center-block" onclick="tableToExcel('tablename', 'name', 'zhangsan.xls')" value="Export to Excel">  
  45. </body>  
  46. <script>  
  47.     var nnn = "";  
  48.     function submt(){  
  49.         document.getElementById('submit').value="";  
  50.     }  
  51.       
  52.     var tableToExcel = (function () {  
  53.         var uri = 'data:application/vnd.ms-excel;base64,'  
  54.         , 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><meta charset="UTF-8"><!--[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>{table}</table></body></html>'  
  55.         , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }  
  56.         , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }  
  57.         return function (table, name) {  
  58.             if (!table.nodeType) table = document.getElementById("tableExcel")  
  59.             var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }  
  60.   
  61.             document.getElementById("dlink").href = uri + base64(format(template, ctx));  
  62.             document.getElementById("dlink").download = document.getElementById('submit').value+'.xls';  
  63.             document.getElementById("dlink").click();  
  64.   
  65.         }  
  66.     })()  
  67. </script>  
  68. </html>  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值