在C#中创buildExcel工作簿时,类未注册错误
当我尝试使用以下代码访问Excel电子表格时,在安装Office 2007(版本12)的Visual Studio 2012中使用C#定义工作簿对象wrkbuk时出现“库未注册”错误
Microsoft.Office.Interop.Excel.Application excapp = new Microsoft.Office.Interop.Excel.Application(); string bookname = @"C:\Users\Public\Documents\RECRUITMENT & SELECTION\MOVEMENTS\MOVEMENTS\Miscellaneous Documents\VacanciesREAL.xls"; Workbook wrkbuk = excapp.Workbooks.Open(bookname); Worksheet wrksht = new Worksheet();
错误的细节是
System.InvalidCastException未处理HResult = -2147467262消息=无法将types为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM对象转换为接口types“Microsoft.Office.Interop.Excel._Application”。 此操作失败,因为IID为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:库未注册。 (来自HRESULT的exception:0x8002801D(TYPE_E_LIBNOTREGISTERED))。 来源= mscorlib程序
我已经在VS 2012中附带的Office 14 Primary Interop程序集中创build了对Microsoft.Office.Interop.Excel.dll的引用,同时也为dll的Office 12版本创build了一个对Microsoft.Office.Interop.Excel.dll的引用,但都无法解决此问题。 我试着用regasm注册dll,但是这也没有帮助。
我可以在以下行上创build工作表wrksht确定Office 14和Office 12 dll,因此问题似乎只影响工作簿定义。
2013年12月17日
试图重新安装Office 2007无济于事,但发现这个解决scheme,工作。 那是在
http://social.msdn.microsoft.com/Forums/vstudio/en-US/d3f92da7-96d3-404b-89d0-d236800ceae5/vs-2012-rc-and-visual-studio-tools-for-office?forum= VSTO
问题是来自多个版本的Office的代码 – 我有来自Office 14的代码,可能来自VS 2012安装
我怀疑VS 2012 RC已经安装了Office 2013types的库,现在已经有了重复版本的注册。 在凌乱的卸载后,我得到了特定的错误信息('无法投射_Application'….'TYPE_E_LIBNOTREGISTERED'),然后重新安装旧版本的Office。 我通过遵循另一个论坛主题的build议,我很难find解决它…基本上我在错误信息中searchregistry的CLSID,所以,{00020970-0000-0000-C000-000000000046}。 它的registry键包含两个键,其中一个被称为“TypeLib”,它又包含另一个types库的CLSID。 然后,我再次searchregistry,从第一个开始,第二个CLSID,这导致我相关的互操作types库。 它有两个条目…. 8.3和8.4,更大的数字对应于Office的后期版本….我删除了…并立即能够运行我的程序。
我有这个完全相同的问题。 这是我如何解决它:
转到HKEY_CLASSES_ROOT \ TypeLib \并search“Office.Interop.Excel”。
我发现HKEY_CLASSES_ROOT \ TypeLib \(guid)\ 1.8但是它的子节点是空的! 我删除它,因为Office 15没有安装在该机器上,嘿presto – 它的工作。
我们的VSTO项目安装程序或我们自己的自定义安装程序必须在那里放置1.8文件夹。
我在这里find了解决scheme:
访问COM组件时出错
我会在我遇到的两台机器上确认@stuzor的回答。
背景:
Windows7 64 bit Office 2010 (32bit) Lync 2013
HKEY_CLASSES_ROOT \ TypeLib \,search“Office.Interop.Excel”。 find几乎不存在的“1.8”文件夹。 删除后,旧VB.net应用程序中的function立即开始工作。
我有完全相同的问题。 如果您安装了新版本的Office,出于某种原因,您必须安装旧版本而不删除新版本(对于我的情况,我只需要安装Office XP照片编辑器),这就造成了这个问题。
花了3小时上下后,最好的办法是修复新版Office,一切都恢复正常。
希望这个信息有助于提供你有相同或相似的情况。
我们有同样的问题。
我们的设置是这样的:
Office 2010:Word和Excel,但Office 2013:Outlook
我们运行Office 2010的安装程序并select修复选项。 之后,Word和Excelregistry中所有错误的键都被删除,问题就解决了。
上面描述的registry黑客为我解决了同样的问题。 唯一的区别是我有1.9和1.7的条目。 我删除了1.9键,我的问题被修复了。
其他信息:
操作系统:Windows 10
Visual Studio Professional 2015
C#Windows窗体应用程序
这是在我的工作笔记本电脑上。 我们已经在每个工作站上安装了Office 2010。
我尝试过的其他一些事情是:
修理MS OFFICE
重新安装MS OFFICE
从Microsoft下载Microsoft Office 2010:主互操作程序集。
我的笔记本上也有几个版本的Microsoft.Office.Interop.Excel.dll。 删除以前的版本没有解决问题。
很高兴我去STACKOVERFLOW.COM因为这个地方岩石!!!!!!