首先,这里提供的解决办法仅适用于出现如下异常的情况:
无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED))。
英文版的异常消息如下:
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: could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)).
本人出现如上异常的系统环境如下:
1. 操作系统为Windows Server 2008 R2 x64;
2. 安装了SharePoint 2010 Beta,从而如下文件夹及相应文件被创建:
C:\Program Files\Microsoft Office\Office14\...
C:\Program Files (x86)\Microsoft Office\Office14\...
3. 安装了Visual Studio 2010 RC,从而如下文件夹及相应文件被创建:
C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.Interop.Excel.dll
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.Interop.Excel.dll
4. 安装了MS Office 2007。(注:MS Office的版本和SharePoint的版本不一致。这一点可能是出现异常的根本原因!)
对异常异常的解决办法为,删除如下两类的注册表键:
第一类:HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.7
第二类:HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{00020812-0000-0000-C000-000000000046}\InprocServer32\14.0.0.0
查询如上项的查找关键字为:“Microsoft.Office.Interop.Excel, Version=14.0.0.0”。
正常情况下,删除如上注册表项后前述异常将不再出现。