1. 程式人生 > >js實現html表格匯出到excel

js實現html表格匯出到excel

//將table匯出到excel中
        function exportToExcel(tableid){
       var curTbl = document.getElementById(tableid);
       var oXL;
       try{
                oXL = new ActiveXObject("Excel.Application"); //建立AX物件excel 
       }catch(e){
                alert("無法啟動Excel!\n\n如果您確信您的電腦中已經安裝了Excel,"+"那麼請調整IE的安全級別。\n\n具體操作:\n\n"+"工具 → Internet選項 → 安全 → 自定義級別 → 對沒有標記為安全的ActiveX進行初始化和指令碼執行 → 啟用");
                return false;
       }
       var oWB = oXL.Workbooks.Add(); //獲取workbook物件
       var oSheet = oWB.ActiveSheet;//啟用當前sheet 
       var sel = document.body.createTextRange();
       sel.moveToElementText(curTbl); //把表格中的內容移到TextRange中
       sel.select(); //全選TextRange中內容 
       sel.execCommand("Copy");//複製TextRange中內容 
       oSheet.Paste();//貼上到活動的EXCEL中
       oXL.Visible = true; //設定excel可見屬性
       var fname = oXL.Application.GetSaveAsFilename("將table匯出到excel

.xls", "Excel Spreadsheets (*.xls), *.xls");
       oWB.SaveAs(fname);
       oWB.Close();
       oXL.Quit();
        }


function method2(tableid) //讀取表格中每個單元到EXCEL中 

    var curTbl = document.getElementById(tableid); 
     var oXL = new ActiveXObject("Excel.Application"); 
     //建立AX物件excel 
     var oWB = oXL.Workbooks.Add(); 
     //獲取workbook物件 
    var oSheet = oWB.ActiveSheet; 
    //啟用當前sheet 
     var Lenr = curTbl.rows.length; 
     //取得表格行數 
     for (i = 0; i < Lenr; i++) 
     { 
         var Lenc = curTbl.rows(i).cells.length; 
         //取得每行的列數 
         for (j = 0; j < Lenc; j++) 
         { 
             oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText; 
             //賦值 
         } 
     } 
     oXL.Visible = true; 
     //設定excel可見屬性 
}

<input type="button" onclick="javascript:method1('TableExcel');" value="第一種方法匯入到EXCEL"> 
<input type="button" onclick="javascript:method2('TableExcel');" value="第二種方法匯入到EXCEL">

但是這種方法存在幾個缺陷缺點(1): 客戶端機器上必須安裝了excel,否則會出錯。 缺點(2): 必須修改瀏覽器的預設設定。設定方法為: 工具->Internet選項->安全->自定義級別->對沒有標記安全級別的ActiveX控制元件進行初始化   
  設為啟用