前端js實現打印(導出)excel表格

產品原型:javascript

圖片.png

功能需求:點擊導出考勤表格按鈕,會自動下載成Excel格式html

圖片.png
圖片.png

jsp頁面代碼:前端

<div class="tools">
<button type="button" class="btn green" id="excell" onclick="method5('dataTable')">導出考勤表</button>
</div>

js代碼java

//打印表格 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'; } } function method5(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(); } var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,', template = '<html><head><meta charset="UTF-8"></head><body><table border="1">{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)) } })() //打印表格 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'; } } function method5(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(); } var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,', template = '<html><head><meta charset="UTF-8"></head><body><table border="1">{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)) } })()

完整的可複製黏貼的demo:node

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        <div class="tools">
            <button type="button" class="btn green" id="excell" onclick="method5('dataTable')">導出考勤表格</button>
        </div>

        <table border="1" id="dataTable">
            <tr>
                <td>王婷111</td>
                <td>一見傾城333 </td>
            </tr>
            <tr>
                <td>祈澈姑娘222</td>
                <td>Python開發者交流平臺44</td>
            </tr>
            <tr>
                <td>wwwangting888</td>
                <td>13661725475</td>
            </tr>
        </table>

    </body>
    <script> //打印表格 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'; } } function method5(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(); } var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,', template = '<html><head><meta charset="UTF-8"></head><body><table border="1">{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>

</html>

原文做者:祈澈姑娘
原文連接:https://www.jianshu.com/u/05f416aefbe1
創做不易,轉載請告知編程

90後前端妹子,愛編程,愛運營,愛折騰。
堅持總結工做中遇到的技術問題,堅持記錄工做中所所思所見,歡迎你們一塊兒探討交流。
有個很難漲粉的的公衆號叫:【編程微刊】app

相關文章
相關標籤/搜索