2010-02-13 109 views
2

我有一個.NET C#窗口應用程序,我需要讀取一些Excel數據。我已經開始編寫一些單元測試..第一次剛剛嘗試實例化工作簿,並且它拋出此錯誤...Windows應用程序通過Interop.Excel庫訪問xls數據問題

System.Runtime.InteropServices.COMException:System.Runtime.InteropService.COMException:檢索具有CLSID {GUID}的組件的COM類工廠失敗,原因爲以下錯誤:80040154類未註冊{Exception from HRESULT:0x80040154(REGDB_E_CLASSNOTREG))

這段應用程序非常簡單, public Workbook RetrieveWorkbook() { return new Workbook(); }

和一個調用此函數的單元測試。

代碼使用Microsoft.Office.Interop.Excel。

我進入了dcom配置實用程序,並驗證訪問似乎是正確的。我錯過了什麼?有什麼想法嗎?

回答

4

MSDN Library article工作簿類的構造函數是相當明確的:

Microsoft.Office.Tools.Excel.Workbook host items cannot be created programmatically.

使用Application.Workbooks.Add()方法,樣本代碼is here.

+0

謝謝!!我試圖首先使用Add(),但無法通過'空引用錯誤',並且無法找到有關預期參數的任何有用信息。你提供的示例代碼顯示我不需要任何額外的參數,但我試圖發送。我會試試這種方式。謝謝!1 – Chris 2010-02-13 15:15:59

+0

由於我在嘗試添加()工作簿之前啓動Excel.Application只需幾行,工作簿集合始終爲空。不確定示例代碼的工作原理,因爲我無法讓代碼在沒有空引用異常的情況下運行。不知道我錯過了什麼。 – Chris 2010-02-13 16:41:48

+0

我不知道,在我的機器上正常工作! – 2010-02-13 16:58:17

0

像上面的答案,下面的代碼工作正常:

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
object o = Type.Missing; 
Workbook wkb = xlApp.Workbooks.Add(o); 
相關問題