【问题标题】:Use Office 2003 interop DLLs without installing the redistributable在不安装可再发行组件的情况下使用 Office 2003 互操作 DLL
【发布时间】:2013-01-08 09:42:56
【问题描述】:

我正在编写一个需要读取 excel 文件的 C# 程序 (.net 2.0)。我开始知道我将不得不使用Microsoft.Office.Interop.Excel。我下载了O2003PIA.MSI 并使用 7Zip,提取了 DLL(未安装)。现在,当我添加对提取的EXCELPIA.DLL 的引用时,它会引发以下错误:

Could not load file or assembly 'Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.

我想将程序集部署为私有程序集,并且不希望最终用户安装 Redistributable。我缺少任何依赖项吗?

我已经尝试添加对OFFICE.DLL 的引用,但也无济于事。

编辑 1

  1. 是否需要先安装Office 2003才能使用?
  2. 还有其他 .net 2.0 替代方案吗?

【问题讨论】:

  • PIA 只是包装器:使用“依赖查看器”查看是否缺少任何必备 DLL。这些 DLL 必须在加载时程序集(即在可搜索的 DLL 路径中)找到,但不应作为项目引用添加。请记住,安装相应的 Office 程序以使用 PIA。此外,请确保仅针对正确的位数(Office 2003 为 32 位),因为 64 位可执行文件将无法找到正确的 32 位资源。
  • 我使用了Dependency Walker,发现它依赖于MSCOREE.dll
  • 这确实是 Office 的一部分 :) 但是,我不知道是否可以在不安装 Office 的情况下获取/分发此类文件。 (如果安装了 Office,还要验证 VS 是否在 32 位模式下运行;直到 Office 2007 才支持 64 位 Office。)
  • 我没有安装office 2003,我也不能。除了办公室互操作之外,还有什么替代方法可以读取 excel 文件单元格吗?
  • 第三方库。在 stackoverflow、codeplex 和 google 上搜索 - 至少有一个针对 2007 年前 Excel 格式的免费/开放许可库 - 例如 excellite.codeplex.com(其他?)还有一些 Java 库,所以通过 round -about 方法,这些也可以是一个选项。

标签: c# office-interop


【解决方案1】:

我使用了一个叫做NPOI的东西,它工作得很好。

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 2012-09-13
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    相关资源
    最近更新 更多