js中的table導出成Excel表格


首先判斷手否是IE,原因在於IE導出我用的是ActiveXObject,判斷的方式很簡單,只需要拿到window.navigator.userAgent即可進行判斷,代碼如下

function getExplorer() { 
    if (window.navigator.userAgent.indexOf("MSIE") >= 0) {
        return 1;
    } else if (window.navigator.userAgent.indexOf("Firefox") >= 0) {
        return 0;
    } else if (window.navigator.userAgent.indexOf("Chrome") >= 0) {
        return 0;
    } else if (window.navigator.userAgent.indexOf("Opera") >= 0) {
        return 0;
    } else if (window.navigator.userAgent.indexOf("Safari") >= 0) {
        return 0;
    } else {
        return 1;
    }
}

下面函數就是當瀏覽器是IE時調用的函數(注意該函數只能將table表格打開在Excel中,並非真正的保存)

function Msie(id) {
        var tabID= document.getElementById(id); 
         var aXO = new ActiveXObject("Excel.Application"); 
         var oWB = oXL.Workbooks.Add(); 
        var oSheet = oWB.ActiveSheet;  
         var len= tabID.rows.length;   //取得表格行數 
         for (i = 0; i < len; i++){ 
             var Lenc = tabID.rows(i).cells.length;  //取得每行的列數 
             for (j = 0; j < Lenc; j++) 
             { 
                 oSheet.Cells(i + 1, j + 1).value = tabID.rows(i).cells(j).innerText; 
                 //賦值 
             } 
         } 
         aXO.Visible = true; 
    }

當瀏覽器為高級瀏覽器時(非IE及IE內核的瀏覽器)調用函數

function other(mytalbe){
  var table = document.getElementById(mytalbe);
    // 克隆(復制)此table元素,這樣對復制品進行修改(如添加或改變table的標題等),導出復制品,而不影響原table在瀏覽器中的展示。
    table = table.cloneNode(true);
    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 version="1.0" encoding="UTF-8" standalone="yes"?><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]--></head><body><table style="vnd.ms-excel.numberformat:@">{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];
            });
        };
    if(!table.nodeType) table = document.getElementById(table);
    var ctx = {
        worksheet: name || 'Worksheet',
        table: table.innerHTML
    };
    window.location.href = uri + base64(format(template, ctx));  
}

然后封裝下面的函數並判斷是否是IE

function tabletoExcel(tableID) {
if(getExplorer() == 1)
     Msie(tableID)
}else{
other(mytalbe)
}
}

之后在需要輸出table的地方調用就好了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM