用javascript 創建ActiveX對象時出現:Automation server can't create object"(Automation 服務器不能創建對). 錯誤的解決辦法。

    今天,想實現在客戶端讀取一個EXCEL文件到一個Table中 ,所以寫了如下代碼:

 

function readExcel()
{
   
var fileName = document.getElementById("File1").value;
   
var objExcel = new ActiveXObject("Excel.Application");
   
if (!fileName)
   
{
      
return;
   }
     
   
var objWorkBook = objExcel.WorkBooks.open(fileName);
   
var objSheet = objWorkBook.ActiveSheet;
   
   
var i=1;
   
var name,code;
   
while(true)
   
{
       name
=objSheet.cells(i,2).value;
       
if (!name)
       
{
           
break;
       }

       
       code 
= objSheet.cells(i,1).value;
       
       
var objTable = document.getElementById("employee");
       
var objRow = objTable.insertRow(1);
       
var btnTd = objRow.insertCell();
       btnTd.innerHTML 
= "<input type="Button" value="刪除" οnclick="deleteEmp(this)" />";
       
       
var codeTd = objRow.insertCell();
       codeTd.innerHTML 
= "<input type="Text" value=""+code+"" />";
       
       
var nameTd = objRow.insertCell();
       nameTd.innerHTML 
= "<input type="Text" value=""+name+"" />";
       i
++
   }

   
}


function deleteEmp(btnDelete)
{
   
var index = btnDelete.parentElement.parentElement.rowIndex;
   
var objTable = document.getElementById("employee");
   objTable.deleteRow(index);
}


 

以上其中:empleoyee爲一個table的id,"File1"爲<input type=file ..../>的ID,實現把EXCEL中的內容讀到table中,table有三列,第一列爲一個“刪除”Button,第二,第三列分別放一個Text控件。

    但在運行的時候,提示:Automation server can't create object。

    但是我要一個HTML文件中,執行同樣的腳本會提示:

 

選擇“Yes”就不會提示錯誤,爲什麼會這樣呢?

於是就上Google搜,唉,同病相連的兄弟還不少啊,但沒一個能清楚解決的。

後來認真想想:應該是被IE安全機制攔截了。於就就在IE設置裏找,但又苦於本人對英文一翹不通,但爲了學習,當時還就裝了個英文版的IE7,沒辦法,只有一個一個的看。最後蒼天不負有心人啊,終於試出來了。原來是這個:

英文原文爲:Initialize and script ActiveX controls not marked as safe for scripting,中文大意是(因爲本人英文水平特差,不對肯請指正):對沒有標記爲安全的ActiveX控件進行初始化和腳本運行。

將它設成:Enable 就解決問題了。

具體設置步驟爲:Tools(工具)->Internet Option...(IE 選項)->Security(安全)->Custom Level(用戶自定義級別)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章