zoukankan      html  css  js  c++  java
  • 【转载】JavaScript导出Excel

    【转载】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();  
    } 
  • 相关阅读:
    Swing中的并发使用SwingWorker线程模式
    使用批处理打二次开发包
    【转】批处理删除SVN文件
    EAS BOS ORMapping的研究
    EAS BOS ORMapping 元数据解析示例
    ORMapping学习
    EAS BOS数据查询默认会查分录的分析
    【Oracle】常用查询
    KDTable公式解析提示信息设置
    【转】Swing多线程编程
  • 原文地址:https://www.cnblogs.com/embraceU/p/9235721.html
Copyright © 2011-2022 走看看