首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中创建Excel工作簿时未注册错误的

在C#中创建Excel工作簿时未注册错误的
EN

Stack Overflow用户
提问于 2013-12-05 10:29:17
回答 8查看 75.4K关注 0票数 37

当我尝试使用以下代码访问Excel电子表格时,当使用Visual 2012中安装了Office2007(Ver12)的C#定义工作簿对象wrkbuk时,会出现一个“库未注册”错误。

代码语言:javascript
运行
复制
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 将'Microsoft.Office.Interop.Excel.ApplicationClass‘类型的COM对象转换为接口类型'Microsoft.Office.Interop.Excel._Application'.的Message=Unable此操作失败,因为对IID‘{000208D5-0000-0000-C000-000000000046}的接口的COM组件的QueryInterface调用失败,原因是以下错误:库未注册。( HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)除外)。Source=mscorlib

我已经在Office 14主互操作程序集中创建了一个引用,该程序集包括VS 2012以及Office 12版本的dll,但这两种方法都没有解决问题。我试过用regasm注册dlls,但这也没有帮助。

我可以用Office 14和Office 12 dll在下面的行上创建worksheet,所以这个问题似乎只影响工作簿的定义。

2013年12月17日

尝试重新安装Office 2007,但没有效果,但找到了此解决方案,效果良好。那是在

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 2013类型库,并且现在已经注册了重复版本。我收到了具体的错误消息

(“无法转换应用程序”.“类型:E_LIBNOTREGISTERED”)

在混乱的卸载之后,然后重新安装一个旧版本的Office。我按照另一个论坛线程的建议解决了这个问题,遗憾的是,我无法find...basically,我在错误消息中搜索注册表以查找CLSID,所以,{00020970-0000-0000-C000-000000000046}。它的注册表项包含两个键,其中一个名为'TypeLib',而后者又包含类型库的另一个CLSID。然后,我从第二个CLSID开始搜索注册表,这导致我找到了相关的互操作类型库。它有两个条目.8.3和8.4,与后来版本的Office....which i deleted...and相对应的更大的数字立即能够运行我的程序。

EN

回答 8

Stack Overflow用户

发布于 2014-05-28 15:49:51

我也有同样的问题。我就是这样修好的:

HKEY_CLASSES_ROOT\TypeLib\和搜索Office.Interop.Excel

我找到了HKEY_CLASSES_ROOT\TypeLib\(guid)\1.8,但是它的子节点是空的!我删除了,因为Office 15没有安装在那台机器上,嘿,它工作了。

无论是我们的VSTO项目安装程序,还是我们自己的自定义安装程序,都必须将1.8文件夹放在那里。

我在这里找到了解决办法:

Error accessing COM components

票数 39
EN

Stack Overflow用户

发布于 2015-04-28 04:40:37

我也有同样的问题。如果您已经安装了Office的新版本,并且由于某些原因,您必须安装旧版本而不删除新版本(就我的情况而言,我只需要安装Office照片编辑器),这就导致了这个问题。

在上上下下花了3个小时之后,最好的方法是修复Office的新版本,一切都恢复正常了。

如果你有相同或相似的情况,希望这个信息能有所帮助。

票数 8
EN

Stack Overflow用户

发布于 2018-01-31 14:37:29

这里没有提到但可能有用的一点是,1.XX的子项也会引起问题。例如:在Computer\HKEY_CLASSES_ROOT\TypeLib{00020813-0000-0000-C000-000000000046}下,我有一个子项1.9。这反过来又有子键(或应该)。下面是的两个子项-- Win32Win64。因此,Visual无法解析Microsoft.Office.Interop.Excel.dll的位置--它正在读取两个子项,其中只能读取一个子项。删除Win32子键完全修复了我的问题。请注意,这是在VS 2017和Office 365 Pro Plus的完整重新安装之后完成的。希望这能帮上忙。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20397506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档