Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#Windows应用程序无法在另一台计算机上运行_C#_.net_Vb.net_Excel_Office Interop - Fatal编程技术网

c#Windows应用程序无法在另一台计算机上运行

c#Windows应用程序无法在另一台计算机上运行,c#,.net,vb.net,excel,office-interop,C#,.net,Vb.net,Excel,Office Interop,我创建了一个新的C#windows窗体应用程序。我已将COM引用“Microsoft Excel 15.0对象库”添加到我的项目中。此项目用于将excel数据导入数据集。我已经做到了。我在电脑里工作得很好。如果我在另一台计算机上运行exe文件,它会显示如下错误 错误: 无法强制转换类型为的COM对象 Microsoft.Office.Interop.Excel.ApplicationClass“到接口类型” “Microsoft.Office.Interop.Excel.\u应用程序”“此操作失

我创建了一个新的C#windows窗体应用程序。我已将COM引用“Microsoft Excel 15.0对象库”添加到我的项目中。此项目用于将excel数据导入数据集。我已经做到了。我在电脑里工作得很好。如果我在另一台计算机上运行exe文件,它会显示如下错误

错误:

无法强制转换类型为的COM对象 Microsoft.Office.Interop.Excel.ApplicationClass“到接口类型” “Microsoft.Office.Interop.Excel.\u应用程序”“此操作失败。” 因为接口的COM组件上的QueryInterface调用 使用IID“{000208D5-0000-0000-C000-0000000000 46}”失败,原因是 以下错误:加载类型库/DLL时出错(来自 HRESULT:0x80029C4A(类型E\U CANTLOADLIBRARY))


COM组件不是我的专长,我也不经常使用它们。但我会告诉你我以前的经历。请注意,我大约6个月前就经历过这种情况,在我的工作场所,情况远不理想

要使用某个/某些COM组件,还需要在目标计算机上安装它的依赖项(在本例中为Excel/Office)。是否检查了目标计算机上是否安装了Excel

如果没有,您可以使用OLEDB连接来读取Excel文件。我不记得具体是如何做到的


也许这在某种程度上有助于使用OLEDB读取Excel文件:

在项目引用中,尝试在dll中设置Copy Local=true

如果您使用的是64位开发环境,请尝试显式定义库的非32位版本。要在visual studio中执行此操作,请勾选并取消勾选该框“首选32位”在项目配置的“构建”部分,这将在.csproj文件中添加
false

感谢您的回复,但我需要使用com引用(Microsoft Excel 15.0对象库)的答案访问excel。正如@Jaxedin所说,您共享的链接非常有用,您的软件将运行的每台计算机上都应该有完全相同的Office库。如果您不能保证这一点,我建议您使用NetOffice,它是MS Office应用程序的智能包装器,只要您只使用资源,就可以提供更宽松的条件所有安装的版本都支持它。谢谢@VBobCat,你的建议很好,我希望Netoffice包装器能解决我的错误。我要试试这个。(Re-)在该计算机上安装Office。如果使用interop,则应在目标计算机上安装相同的MS Office版本。非常感谢@Dirk、@Jaxedin,它解决了我的错误。如果我想在许多系统上运行我的应用程序,那么在所有这些系统上安装相同的Office版本并不是更好的方法。