首页 > 语言 > JavaScript > 正文

js前端导出Excel的方法

2024-05-06 15:24:56
字体:
来源:转载
供稿:网友

需求:

要求把项目中的table表格导出Excel

需求分析及解决:

既然需要导出,是报表的可能性比较大,我的项目中就是这样,那既然是报表导出,可以是前端导出,也可以是后端导出(技术包括POI或者报表工具等),这篇文章主
要是网上找的前端导出,既然是前端导出又是报表就需要有数据,所以数据都需要你提前做好相应填充

代码:

<!DOCTYPE html> <html> <head lang="en">  <meta charset="UTF-8">  <title>html 表格导出</title>  <script language="JavaScript" type="text/javascript">       var idTmr;  //获取当前浏览器类型   function getExplorer() {    var explorer = window.navigator.userAgent ;    //ie    if (explorer.indexOf("MSIE") >= 0) {     return 'ie';    }    //firefox    else if (explorer.indexOf("Firefox") >= 0) {     return 'Firefox';    }    //Chrome    else if(explorer.indexOf("Chrome") >= 0){     return 'Chrome';    }    //Opera    else if(explorer.indexOf("Opera") >= 0){     return 'Opera';    }    //Safari    else if(explorer.indexOf("Safari") >= 0){     return 'Safari';    }   }     //获取到类型需要判断当前浏览器需要调用的方法,目前项目中火狐,谷歌,360没有问题   //win10自带的IE无法导出   function exportExcel(tableid) {    if(getExplorer()=='ie')    {     var curTbl = document.getElementById(tableid);     var oXL = new ActiveXObject("Excel.Application");     var oWB = oXL.Workbooks.Add();     var xlsheet = oWB.Worksheets(1);     var sel = document.body.createTextRange();     sel.moveToElementText(curTbl);     sel.select();     sel.execCommand("Copy");     xlsheet.Paste();     oXL.Visible = true;      try {      var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");     } catch (e) {      print("Nested catch caught " + e);     } finally {      oWB.SaveAs(fname);      oWB.Close(savechanges = false);      oXL.Quit();      oXL = null;      idTmr = window.setInterval("Cleanup();", 1);     }     }    else    {     tableToExcel(tableid)    }   }   function Cleanup() {    window.clearInterval(idTmr);    CollectGarbage();   }     //判断浏览器后调用的方法,把table的id传入即可   var tableToExcel = (function() {    var uri = 'data:application/vnd.ms-excel;base64,',      template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',      base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },      format = function(s, c) {       return s.replace(/{(/w+)}/g,         function(m, p) { return c[p]; }) }    return function(table, name) {     if (!table.nodeType) table = document.getElementById(table)     var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}     window.location.href = uri + base64(format(template, ctx))    }   })()   </script> </head> <body>  <div >    <button type="button" onclick="exportExcel('tableExcel')">导出Excel</button> </div> <div id="myDiv"> <table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0">  <tr>   <td colspan="5" align="center">html 表格导出道Excel</td>  </tr>  <tr>      <td>列标题</td>  </tr>  <tr>   <td>aaa</td>   <td>bbb</td>   <td>ccc</td>   <td>ddd</td>   <td>eee</td>  </tr>  <tr>   <td>AAA</td>   <td>BBB</td>   <td>CCC</td>   <td>DDD</td>   <td>EEE</td>  </tr>  <tr>   <td>FFF</td>   <td>GGG</td>   <td>HHH</td>   <td>III</td>   <td>JJJ</td>  </tr> </table> </div> </body> </html>             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选