呼叫ActiveX控制元件把頁面內容直接匯入excel

NO IMAGE

第一種:逐個單元格匯出法(此方法操作相對複雜,但是比較靈和,適合對匯出表有要求的情況)

javascript程式碼如下  
<SCRIPT LANGUAGE=”javascript”>   
function ExcelExport(tableid)   
{   
    var table = document.getElementById(tableid); //獲取頁面的table  
    var excel = new ActiveXObject(“Excel.Application”); //例項化Excel.Application物件  

    var workB = excel.Workbooks.Add(); ////新增新的工作簿  
    var sheet = workB.ActiveSheet;   
//var sheet= workB.Worksheets(1);//該句程式碼和上句程式碼同意,都是啟用一個sheet  
/***************常用樣式設定語句***************************************/
    //sheet.Rows(1).WrapText = false; //自動換行設定  
    //sheet.Rows(1).Font.Size=18;//設定第一行的字型大小  
    //sheet.Rows(1).Interior.ColorIndex=2;//設定第一行背景色   
    //sheet.Rows(1).Font.ColorIndex=1;//設定第一行字型色     
    //sheet.Range(sheet.Cells(1,1),sheet.Cells(1,7)).mergecells=true;//第一行1到7單元格合併  

    sheet.Columns(“A”).ColumnWidth =35;//設定列寬  
    sheet.Columns(“B”).ColumnWidth =35;  
    //sheet.Columns(“A:B”).ColumnWidth =35;//另一種設定列寬的方式  
    sheet.Rows(1).RowHeight = 35;//設定行高  
    //sheet.Rows(1).Font.Name=”黑體”;//設定字型  
     //sheet.Columns.AutoFit;//所有列自適應寬度  
     //水平對齊方式(貌似-4108為水平居中)  
    //sheet.Range( sheet.Cells(1,1),sheet.Cells(1,5)).HorizontalAlignment =-4108;  

    //垂直對齊方式  
    //sheet.Range( sheet.Cells(1,1),sheet.Cells(1,5)).VerticalAlignment =-4108;  

    //根據Borders()中引數值設定各個方向邊距,1,2,3,4—>top,buttom,left,right  
    //sheet.Range( sheet.Cells(2,1),sheet.Cells(1,5)).Borders(1).Weight = 2;  
/**將頁面table寫入到Excel中,具體複雜情況(合併單元格等)可在這裡面具體操作**********/
    var LenRow = table .rows.length; //以下為迴圈遍歷獲取頁面table的cell元素  
    for (i = 0; i < LenRow ; i )   
    {   
        var lenCol = table.rows(i).cells.length;   
        for (j = 0; j < lenCol ; j )   
        {   
            sheet.Cells(i 1, j 1).value = table.rows(i).cells(j).innerText; //通過該語句將table的每個  

                                        //cell賦予Excel 當前Active的sheet下的相應的cell下  
        }   
    }   
    excel.Visible = true;//設定excel為可見  
excel.UserControl = true; //將Excel交由使用者控制  
}   
</SCRIPT>
javascript程式碼如下
<SCRIPT LANGUAGE=”javascript”>
function ExcelExport(tableid)
{
    var table = document.getElementById(tableid); //獲取頁面的table
    var excel = new ActiveXObject(“Excel.Application”); //例項化Excel.Application物件
    var workB = excel.Workbooks.Add(); ////新增新的工作簿
    var sheet = workB.ActiveSheet;
//var sheet= workB.Worksheets(1);//該句程式碼和上句程式碼同意,都是啟用一個sheet
/***************常用樣式設定語句***************************************/
    //sheet.Rows(1).WrapText = false; //自動換行設定
    //sheet.Rows(1).Font.Size=18;//設定第一行的字型大小
    //sheet.Rows(1).Interior.ColorIndex=2;//設定第一行背景色
    //sheet.Rows(1).Font.ColorIndex=1;//設定第一行字型色  
    //sheet.Range(sheet.Cells(1,1),sheet.Cells(1,7)).mergecells=true;//第一行1到7單元格合併
    sheet.Columns(“A”).ColumnWidth =35;//設定列寬
    sheet.Columns(“B”).ColumnWidth =35;
    //sheet.Columns(“A:B”).ColumnWidth =35;//另一種設定列寬的方式
    sheet.Rows(1).RowHeight = 35;//設定行高
    //sheet.Rows(1).Font.Name=”黑體”;//設定字型
     //sheet.Columns.AutoFit;//所有列自適應寬度
     //水平對齊方式(貌似-4108為水平居中)
    //sheet.Range( sheet.Cells(1,1),sheet.Cells(1,5)).HorizontalAlignment =-4108;
    //垂直對齊方式
    //sheet.Range( sheet.Cells(1,1),sheet.Cells(1,5)).VerticalAlignment =-4108;
    //根據Borders()中引數值設定各個方向邊距,1,2,3,4—>top,buttom,left,right
    //sheet.Range( sheet.Cells(2,1),sheet.Cells(1,5)).Borders(1).Weight = 2;
/**將頁面table寫入到Excel中,具體複雜情況(合併單元格等)可在這裡面具體操作**********/
    var LenRow = table .rows.length; //以下為迴圈遍歷獲取頁面table的cell元素
    for (i = 0; i < LenRow ; i )
    {
        var lenCol = table.rows(i).cells.length;
        for (j = 0; j < lenCol ; j )
        {
            sheet.Cells(i 1, j 1).value = table.rows(i).cells(j).innerText; //通過該語句將table的每個
                                        //cell賦予Excel 當前Active的sheet下的相應的cell下
        }
    }
    excel.Visible = true;//設定excel為可見
excel.UserControl = true; //將Excel交由使用者控制
}
</SCRIPT>

第二種方法:

//匯出excel

    function method1(tableid) {
         var curTbl = document.getElementById(tableid);
         var oXL;
         try{
             oXL = new ActiveXObject(“Excel.Application”);
        }catch (e) {
            alert(“無法啟動Excel!\n\n如果您的電腦中已經安裝了Excel,由於匯出Excel使用了ActiveX控制元件,” “需要調整IE的安全級別。\n\n具體操作:\n\n” “工具 → Internet選項 → 安全 → 自定義級別 → 對沒有標記為安全的ActiveX進行初始化和指令碼執行 → 啟用”);
            return;
        }
        var oWB = oXL.Workbooks.Add(); //建立AX物件excel
        var oSheet = oWB.ActiveSheet; //獲取workbook物件
        var sel = document.body.createTextRange(); //啟用當前sheet
        sel.moveToElementText(curTbl); //把表格中的內容移到TextRange中
        sel.select(); //全選TextRange中內容
        sel.execCommand(“Copy”); //複製TextRange中內容
        oSheet.Paste(); //貼上到活動的EXCEL中
        oSheet.Columns(“A”).ColumnWidth =7;//設定列寬
        oSheet.Columns(“B”).ColumnWidth =6;//設定列寬
        oSheet.Columns(“C”).ColumnWidth =10;//設定列寬
        oSheet.Columns(“F”).ColumnWidth =8;//設定列寬
        oSheet.Columns(“E”).ColumnWidth =8;//設定列寬
        oSheet.Columns(“F”).ColumnWidth =4;//設定列寬
        oSheet.Columns(“G” “:” “IV”).ColumnWidth =4;//設定列寬
        oSheet.Columns(“A” “:” “IV”).WrapText=true; //設定自動換行
        oSheet.Rows(1 “:” 5).HorizontalAlignment = 3; //設定第一到第五行是居中顯示
        //獲得table的行數
        var tab = document.getElementById(“tableID”);
        var rowNum = tab.rows.length;
        oSheet.Rows((rowNum-3) “:” rowNum).HorizontalAlignment = 3; //設定第一到第五行是居中顯示
        oSheet.Rows(1 “:” 1).RowHeight =20;
        oSheet.Rows(2 “:” 5).RowHeight =15;
        oXL.Visible = true; //設定excel可見屬性

    }

   <div>
    匯出資料:<a href=”javascript:method1(‘tableID’)”><span class=”export excel”>匯出Excel…</span></a>
</div>