2012-08-06 40 views
1

我使用這個特定部分的代碼,我發現在網上,我試圖實現,這個JavaScript需要在HTML表中顯示的表的值,並將其轉換爲Excel片。HTML表格在Excel中的Excel工作表

但由於某些未知原因,代碼的下面部分不起作用。它只能在IE中使用,我不確定爲什麼下面的代碼不工作。有人可以這個代碼有什麼問題,並可以告訴我如何糾正這個代碼?

<html> 
    <head> 
    <script type="text/javascript"> 
     function write_to_excel() { 
     str=""; 
     var mytable = document.getElementsByTagName("table")[0]; 
     var row_Count = mytable.rows.length; 
     var col_Count = mytable.getElementsByTagName("tr")[0].getElementsByTagName("td").length; 

     var ExcelApp = new ActiveXObject("Excel.Application"); 
     var ExcelSheet = new ActiveXObject("Excel.Sheet"); 
     ExcelSheet.Application.Visible = true; 

     for(var i=0; i < row_count ; i++) 
     { 
      for(var j=0; j < col_Count; j++) 
      { 
      str= mytable.getElementsByTagName("tr")[i].getElementsByTagName("td")[j].innerHTML; 
      ExcelSheet.ActiveSheet.Cells(i+1,j+1).Value = str; 
      } 
     } 

     } 
    </script> 
    </script> 
    </head> 
    <body> 

    <input type="submit" value="Export to EXCEL" onclick="write_to_excel();"/> 

    <!-- ************************************************--> 
    <!--**** INSERT THE TABLE YOU WANT EXPORT HERE ****--> 
    <table><tr><td>First</td><td>second</td></tr></table> 
    <!-- *******************example given above****************--> 

    </body> 
</html> 
+0

不是你的問題的原因,但你有一個額外的結束''標籤 – 2012-08-06 09:29:49

+0

您需要格式化代碼,以便我們可以閱讀它。你得到什麼樣的錯誤? – Niklas 2012-08-06 09:29:51

+0

代碼應該將表格轉換爲Excel表格。我不會出現任何錯誤。它打開一個沒有插入值的空Excel表。 – sankar 2012-08-06 09:47:49

回答

7

該做的伎倆:

function writeToExcel() { 
    var i, j, str, 
     myTable = document.getElementById('mytable'), 
     rowCount = myTable.rows.length, 
     excel = new ActiveXObject('Excel.Application');// Activates Excel 
    excel.Workbooks.Add(); // Opens a new Workbook 
    excel.Application.Visible = true; // Shows Excel on the screen 
    for (i = 0; i < rowCount; i++) { 
     for (j = 0; j < myTable.rows[i].cells.length; j++) { 
      str = myTable.rows[i].cells[j].innerText; 
      excel.ActiveSheet.Cells(i + 1, j + 1).Value = str; // Writes to the sheet 
     } 
    } 
    return; 
} 

您的原始代碼實際工作中,只有在for(i) -loop(row_count == undefined)一個錯字。並沒有錯誤?但是,通過此代碼,您可以擺脫行中引用單元格的可怕黑客攻擊,並打開「工作簿」而不是「對象」。

+0

hi..i試圖使用此代碼,但它顯示以下錯誤.ReferenceError:ActiveXObject未定義 [Break On This Error ] \t excel = new ActiveXObject('Excel.Application'); //激活Excel – 2013-03-22 05:22:51

+1

@DinoopNair(Un)強大的'ActiveXObject()'僅在IE中可用; )。 – Teemu 2013-03-22 07:39:03

1

它在哪裏保存Excel表格或至少打開Excel表格?我在我的Wamp服務器上嘗試了這段代碼,點擊按鈕後,我看不到任何操作。我如何檢查是否有任何事情發生?

+1

Upvoted **回答**? @randomuser我在代碼中添加了一些註釋。代碼中沒有保存功能,因此新創建的工作簿不以編程方式保存。 – Teemu 2012-08-07 05:06:58