欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【转载】JavaScript导出Excel

程序员文章站 2022-05-28 12:46:22
【转载】JavaScript导出Excel 原文地址 如果没有用到前端插件,也没有用到后台poi导出的话,用js导出也是一种方式。亲测可用。 ......

【转载】JavaScript导出Excel


 

如果没有用到前端插件,也没有用到后台poi导出的话,用js导出也是一种方式。亲测可用。

 

/**
 * 导出excel
 */
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) {  
    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",filename);  
        } 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 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) {  
        if (!table.nodeType) table = document.getElementById(table)  ;
        var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} ; 
       // window.location.href = uri + base64(format(template, ctx))  ;
       document.getElementById("exportExcel").href = uri + base64(format(template, ctx));
       document.getElementById("exportExcel").download = filename;
     //  document.getElementById("exportExcel").click();
    }  ;
})()  ;

function Cleanup() {  
    window.clearInterval(idTmr);  
    CollectGarbage();  
}