Excel Interop - 类型未注册

时间:2013-11-28 18:38:24

标签: c# visual-studio-2010 excel interop

我使用excel 2003 COM互操作库为x86平台编译了一个C#winform应用程序。 Visual Studio项目引用了Office 2003的以下互操作文件

Microsoft.Office.Interop.Excel.dll(v 11.0.0,特定版本= true) Microsoft.Vbe.Interop.dll(v 11.0.0,特定版本= false)

此应用程序在大多数使用excel 2003,2007和2010的计算机上运行良好,但其中一位用户向我报告了以下例外情况。

此用户拥有Windows 7和Office 2010

System.InvalidCastException: Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).

   at Microsoft.Office.Interop.Excel.ApplicationClass.get_Workbooks()

从我所看到的情况来看,Office的冲突版本可能会出现此问题,但由于我特别引用了2003 Office PIA并将其与应用程序一起分发,因此我不确定导致问题的原因。 / p>

由于

1 个答案:

答案 0 :(得分:2)

用户的注册表已损坏。他已经安装了Office,或者您将无法创建Aplication对象,但它缺少Typelib注册表项中的条目。需要允许互操作成功。

重新安装Office是一个理智而简单的解决方案。这种损失很少被孤立。