Windows应用程序通过Interop.Excel库访问xls数据问题

问题描述:

我有一个.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配置实用程序,并验证访问似乎是正确的。我错过了什么?有什么想法吗?

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

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

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