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

问题描述:

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

错误:

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: Error loading type library/DLL (Exception from HRESULT:0x80029C4A(TYPE_E_CANTLOADLIBRARY)).

+0

(重新)在该计算机上安装Office 。 –

+0

如果您使用interop,则应该在目标机器上安装相同的MS Office版本。 – Jaxedin

+0

非常感谢@Dirk,@ Jaxedin,它解决了我的错误,如果我想让我的应用程序运行在很多系统上,那么它并不是更好的方式来为所有这些系统安装相同的Office版本。 –

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

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

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

或许这能够以某种方式帮助使用OLEDB来读取Excel文件:http://www.codeproject.com/Tips/705470/Read-and-Write-Excel-Documents-Using-OLEDB

+0

感谢您的回复,但我需要使用com参考(Microsoft Excel 15.0 Object Library)来访问excel。您分享的链接非常有用 –

+0

正如@Jaxedin所说,您的软件将运行在每台计算机上应具有完全相同的Office库。如果你不能保证,我建议你使用NetOffice http://netoffice.codeplex.com/它是MS Office应用程序的一个智能包装,它允许你更宽松的条件,只要你只使用安装的所有版本支持的资源。 – VBobCat

+0

感谢@VBobCat,我的建议非常好,我希望Netoffice包装将解决我的错误。我会试试这个。 –

在您的proyect参考,尝试设置复制本地=真正在你的DLL