【问题标题】:c# Windows Application failed to run on another computerc# Windows 应用程序无法在另一台计算机上运行
【发布时间】:2016-07-08 06:28:42
【问题描述】:

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

错误:

无法转换 COM 类型的对象 Microsoft.Office.Interop.Excel.ApplicationClass' 到接口类型 ‘Microsoft.Office.Interop.Excel._Application’” 此操作失败 因为接口的 COM 组件上的 QueryInterface 调用 使用 IID '{{000208D5-0000-0000-C000-000000000046}' 失败,因为 以下错误:加载类型库/DLL时出错(来自的异常 HRESULT:0x80029C4A(TYPE_E_CANTLOADLIBRARY))。

【问题讨论】:

  • (重新)在该计算机上安装 Office。
  • 如果您使用互操作,您应该在目标机器上安装相同的 MS Office 版本。
  • 非常感谢@Dirk,@Jaxedin,它解决了我的错误,如果我想在多个系统上运行我的应用程序,那么在所有这些系统上安装相同的办公版本并不是更好的方法。

标签: c# .net vb.net excel office-interop


【解决方案1】:

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

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

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

也许这可以在某种程度上帮助使用 OLEDB 读取 Excel 文件:http://www.codeproject.com/Tips/705470/Read-and-Write-Excel-Documents-Using-OLEDB

【讨论】:

  • 感谢您的回复,但我需要使用 com 参考(Microsoft Excel 15.0 对象库)来访问 excel 的答案。您分享的链接很有帮助
  • 正如@Jaxedin 所说,您应该在您的软件将运行的每台计算机上拥有完全相同的 Office 库。如果你不能保证,我建议你使用 NetOffice netoffice.codeplex.com 它是 MS Office 应用程序的智能包装器,只要你只使用安装的所有版本支持的资源,它就可以让你更轻松的条件。
  • 谢谢@VBobCat,你的建议很棒,我希望Netoffice wrapper 能解决我的错误。我要试试这个。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果您在 64 位开发环境中工作,请尝试明确定义使用非 32 位版本的库。要在 Visual Studio 中执行此操作,请在项目配置的构建部分中勾选并取消勾选“首选 32 位”框,这将在 .csproj 文件中添加 <Prefer32Bit>false</Prefer32Bit>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多