【发布时间】: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
- 是否需要先安装Office 2003才能使用?
- 还有其他 .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