js前端導(dǎo)出Excel的方法
需求:
要求把項(xiàng)目中的table表格導(dǎo)出Excel
需求分析及解決:
既然需要導(dǎo)出,是報(bào)表的可能性比較大,我的項(xiàng)目中就是這樣,那既然是報(bào)表導(dǎo)出,可以是前端導(dǎo)出,也可以是后端導(dǎo)出(技術(shù)包括POI或者報(bào)表工具等),這篇文章主
要是網(wǎng)上找的前端導(dǎo)出,既然是前端導(dǎo)出又是報(bào)表就需要有數(shù)據(jù),所以數(shù)據(jù)都需要你提前做好相應(yīng)填充
代碼:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>html 表格導(dǎo)出</title> <script language="JavaScript" type="text/javascript"> var idTmr; //獲取當(dāng)前瀏覽器類型 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'; } } //獲取到類型需要判斷當(dāng)前瀏覽器需要調(diào)用的方法,目前項(xiàng)目中火狐,谷歌,360沒(méi)有問(wèn)題 //win10自帶的IE無(wú)法導(dǎo)出 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(); } //判斷瀏覽器后調(diào)用的方法,把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')">導(dǎo)出Excel</button> </div> <div id="myDiv"> <table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <td colspan="5" align="center">html 表格導(dǎo)出道Excel</td> </tr> <tr> <td>列標(biāo)題</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>
重點(diǎn):
把此代碼復(fù)制到記事本,命名為.html文件,用瀏覽器打開即可查看是否可以導(dǎo)出,如果可以導(dǎo)入項(xiàng)目中,把數(shù)據(jù)填充即可。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序?qū)崿F(xiàn)點(diǎn)擊頁(yè)面出現(xiàn)文字
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)點(diǎn)擊頁(yè)面出現(xiàn)文字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09利用JavaScript創(chuàng)建一個(gè)兔年春節(jié)倒數(shù)計(jì)時(shí)器
這篇文章主要介紹了如何利用JavaScript創(chuàng)建一個(gè)兔年春節(jié)倒數(shù)計(jì)時(shí)器,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JavaScript有一定的幫助,需要的可以參考一下2023-01-01js之如何刪除多層數(shù)組嵌套的最后一層中的部分?jǐn)?shù)據(jù)
這篇文章主要介紹了js之如何刪除多層數(shù)組嵌套的最后一層中的部分?jǐn)?shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06js 通過(guò)cookie實(shí)現(xiàn)刷新不變化樹形菜單
通過(guò)設(shè)置cookie來(lái)保存樹形菜單的狀態(tài),在頁(yè)面加載時(shí)重新讀取cookie來(lái)設(shè)置菜單2014-10-10javascript下高性能字符串連接StringBuffer類
使用StringBuffer類比使用加號(hào)節(jié)省50%左右的時(shí)間,大家對(duì)于大數(shù)據(jù)的連接最好使用這個(gè)方法。2010-08-08js中字符串編碼函數(shù)escape()、encodeURI()、encodeURIComponent()區(qū)別詳解
JavaScript中有三個(gè)可以對(duì)字符串編碼的函數(shù),分別是: escape,encodeURI,encodeURIComponent,相應(yīng)3個(gè)解碼函數(shù):unescape,decodeURI,decodeURIComponent 。接下來(lái)通過(guò)本文給大家介紹三者之家的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧2016-04-04