2013-03-28 65 views
2

將html表導出爲ex​​cel時,出現以下錯誤: SCRIPT429:自動化服務器無法創建對象... 此功能工作正常,但當我重新啓動我的電腦和應用程序停止工作不知道發生了什麼事情。將html表導出爲ex​​cel時出現錯誤

function write_to_excel() { 
str = ""; 
var myTable = document.getElementById('myTable'); 
var rows = myTable.getElementsByTagName('tr'); 
var rowCount = myTable.rows.length; 
var colCount = myTable.getElementsByTagName("tr")[0] 
     .getElementsByTagName("th").length; 

var ExcelApp = new ActiveXObject("Excel.Application"); //Debug shows error at this line 
var ExcelWorkbook = ExcelApp.Workbooks.Add(); 
var ExcelSheet = ExcelWorkbook.ActiveSheet; 

ExcelApp.Visible = true; 
ExcelSheet.Range("A1", "Z1").Font.Bold = true; 
ExcelSheet.Range("A1", "Z1").Font.ColorIndex = 23; 

// Format table headers 
for (var i = 0; i < 1; i++) { 
    for (var j = 0; j < colCount - 1; j++) { 
     str = myTable.getElementsByTagName("tr")[i] 
       .getElementsByTagName("th")[j].innerHTML; 
     ExcelSheet.Cells(i + 1, j + 1).Value = str; 
    } 
    ExcelSheet.Range("A1", "Z1").EntireColumn.AutoFit(); 
} 
for (var i = 1; i < rowCount; i++) { 
    for (var k = 0; k < colCount - 1; k++) { 
     str = rows[i].getElementsByTagName('td')[k].innerHTML; 
    ExcelSheet.Cells(i + 1, k + 1).Value = myTable.rows[i].cells[k].innerText; 
    } 
    ExcelSheet.Range("A" + i, "Z" + i).WrapText = true; 
    ExcelSheet.Range("A" + 1, "Z" + i).EntireColumn.AutoFit(); 
} 

return; 
    } 

回答

3

自動化服務器不能創建對象。

意味着您的ActiveX設置太高,因此代碼無法運行。

+0

有沒有辦法解決這個問題,而不會改變設置,我會告訴所有用戶修復ActiveX設置。我只需要導出到excel功能,在IE上工作 – Fahad

+0

@Teemu感謝您的評論我的意思是有另一種方式導出表的excel,不需要ActiveeXObject。我曾嘗試過幾個沒有ActiveXObject的代碼,但他們只能在Chrome和Firefox中工作。到目前爲止,我所發現的所有功能都是針對IE的ActiveXobject。 – Fahad

+0

將數據發送到服務器,讓您的服務器創建文件並將其返回給客戶端。 – epascarello