這幾天用 ASP.NET 透過 Microsoft.Office.Interop.Excel 開啟 Excel
一直遇到問題
所以在這邊稍微整理一下
1.設定元件服務 > Microsoft Excel Application
2.安全性 > 啟動和啟用權限
要加入IIS 帳號能夠本機啟動/遠端啟動/本機啟用/遠端啟用
3.安全性 > 存取權限
要加入IIS 帳號能夠本機存取
4.識別身分
要設定為互動式使用者
如果都不設定,會出「具有 CLSID {00024500-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005。」錯誤
只設定2,會出「Microsoft Office Excel 無法存取檔案 'xxxxx.xls'。可能原因如下: ‧檔案的名稱或路徑不存在。 ‧這個檔案正被其他程式所使用中。 ‧您要儲存的活頁簿名稱與現有開啟的活頁簿名稱相同。」錯誤
只設定3,會出「具有 CLSID {00024500-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005。」錯誤
只設定4,會出「具有 CLSID {00024500-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005。」錯誤
只設定2和3,會出「Microsoft Office Excel 無法存取檔案 'xxxxx.xls'。可能原因如下: ‧檔案的名稱或路徑不存在。 ‧這個檔案正被其他程式所使用中。 ‧您要儲存的活頁簿名稱與現有開啟的活頁簿名稱相同。」錯誤
只設定2和4,會出「具有 CLSID {00024500-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005。」錯誤
只設定3和4,會出「具有 CLSID {00024500-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005。」錯誤
P.S.如果是在Web Server上測試
上述Microsoft Office Excel 無法存取檔案... 錯誤可能會替換為:
「伺服器丟出一個例外。(發生例外狀況於HRESULT: 0x80010105(RPC_E_SERVERFAULT))」
IIS 帳號 :
IIS6 = Network Service
IIS7.5 = IIS APPPOOL\應用程式集區名稱
我的測試環境:
Windows7, IIS7.5, Office2007
參考資料:
1.職人大-[ASP.net/MSSQL] 讀寫Office Excel之前要做的相關設定
2.保哥-介紹 IIS 7.5 的應用程式集區與新增的「虛擬帳戶」特性
作者已經移除這則留言。
回覆刪除請問設定互動式使用者。是否沒人登入此機器。會出現無法使用的問題
回覆刪除