今天,想實現在客戶端讀取一個EXCEL文件到一個Table中 ,所以寫了如下代碼:
{
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(用戶自定義級別)。