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)文章
一個(gè)簡(jiǎn)單的全屏圖片上下打開顯示網(wǎng)頁(yè)效果示例
這是一個(gè)簡(jiǎn)單的全屏圖片上下打開顯示網(wǎng)頁(yè)效果,源碼如下,喜歡的朋友可以練練手2014-07-07JavaScript重復(fù)元素處理方法分析【統(tǒng)計(jì)個(gè)數(shù)、計(jì)算、去重復(fù)等】
這篇文章主要介紹了JavaScript重復(fù)元素處理方法,結(jié)合實(shí)例形式分析了javascript針對(duì)字符串、數(shù)組中重復(fù)元素的個(gè)數(shù)統(tǒng)計(jì),計(jì)算及去重復(fù)等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12Javascript循環(huán)刪除數(shù)組中元素的幾種方法示例
這篇文章主要給大家介紹了關(guān)于Javascript循環(huán)刪除數(shù)組中元素的幾種方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05JS實(shí)現(xiàn)獲取進(jìn)今年第幾天是周幾的方法分析
這篇文章主要介紹了JS實(shí)現(xiàn)獲取進(jìn)今年第幾天是周幾的方法,結(jié)合實(shí)例形式對(duì)比分析了JavaScript進(jìn)行日期與天數(shù)運(yùn)算相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-06-0611個(gè)ES13中令人驚嘆的JavaScript新特性總結(jié)
與許多其他編程語(yǔ)言一樣,JavaScript?也在不斷發(fā)展,小編今天就為大家介紹ES13中添加的最新功能,并查看其用法示例以更好地理解它們,有需要的小伙伴可以了解下2023-09-09JavaScript iframe 實(shí)現(xiàn)多窗口通信實(shí)例詳解
這篇文章主要為大家介紹了JavaScript iframe 實(shí)現(xiàn)多窗口通信實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10