js导出excel

Posted zard23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js导出excel相关的知识,希望对你有一定的参考价值。

<div>    
    <button onclick="exportExcel(‘tableExcel‘,‘‘,‘111.xlsx‘)" class="btn btn-primary" style="float:right;">
  <a id="dlink" href="" style="display: none;"></a><i class="fa fa-download  "></i> 导出表格</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>  
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 exportExcel(tableid,name,filename) { 
    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,name,filename) 
    } 
} 

function Cleanup() { 
    window.clearInterval(idTmr); 
    CollectGarbage(); 
} 
var tableToExcel = (function() { 
    var uri = ‘data:application/vnd.ms-excel;base64,‘, 
    //Excel样式代码
    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><!--[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]-->‘+
                ‘ <style type="text/css">‘+
                ‘.excelTable  {‘+
                ‘border-collapse:collapse;‘+
                 ‘ border:thin solid #999; ‘+
                ‘}‘+
                ‘   .excelTable  th {‘+
                ‘   border: thin solid #999;‘+
                ‘  padding:20px;‘+
                ‘  text-align: center;‘+
                ‘  border-top: thin solid #999;‘+
                ‘ background-color: #E6E6E6;‘+
                ‘ }‘+
                ‘ .excelTable  td{‘+
                ‘ border:thin solid #999;‘+
                ‘  padding:2px 5px;‘+
                ‘  text-align: center;‘+
                ‘ }</style>‘+
                ‘</head><body ><table class="excelTable">{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,filename) { 
        if (!table.nodeType) table = document.getElementById(table) 
        var ctx = {worksheet: name || ‘Worksheet‘, table: table.innerHTML} 
        document.getElementById("dlink").href = uri + base64(format(template, ctx));
        document.getElementById("dlink").download = filename;
        document.getElementById("dlink").click();
    } 
})() 

 前提:引入jquery

以上是关于js导出excel的主要内容,如果未能解决你的问题,请参考以下文章

js导出excel

firefox浏览器下用JS的方式导出excel

纯js导出Excel文件(无需引入插件)

纯js导出Excel文件(无需引入插件)

XLSX.js 导出Excel demo

几种Excel导出的方法