如何引用 Microsoft.Office.Interop.Excel dll?

Posted

技术标签:

【中文标题】如何引用 Microsoft.Office.Interop.Excel dll?【英文标题】:How to reference Microsoft.Office.Interop.Excel dll? 【发布时间】:2013-03-08 02:52:16 【问题描述】:

我在 2006 年使用 MS VS 2005 开发了一个处理 excel 表的系统。现在,我不能使用与 MS VS 2012 相同的参考。

var app = new Microsoft.Office.Interop.Excel.Application();
Workbooks wbs = app.Workbooks;

【问题讨论】:

VS2012没有Office项目吗?你不能用那些? 我在尝试从 Microsoft 构建 DEMO 项目时遇到了同样的错误。至此,我开发一个 excel 插件的尝试就结束了。我可以从事许多其他项目,而不是搞乱连“Hello World”都不起作用的东西。 【参考方案1】:

使用 NuGet(VS 2013+):

在任何最新版本的 Visual Studio 中,最简单的方法就是使用 NuGet 包管理器。 (即使是 VS2013,带有 NuGet Package Manager for Visual Studio 2013 扩展名。)

右键单击“参考”并选择“管理 NuGet 包...”,然后只需搜索 Excel。


VS 2012:

旧版本的 VS 无法访问 NuGet。

右键单击“参考”并选择“添加参考”。 选择左侧的“扩展”。 查找Microsoft.Office.Interop.Excel(请注意,您只需在右上角的搜索框中输入“excel”即可。)


VS 2008 / 2010:

右键单击“参考”并选择“添加参考”。 选择“.NET”标签。 寻找Microsoft.Office.Interop.Excel

【讨论】:

当我们从 VS08 更改为 VS12 时,这个 dll 也有一些问题。将其更新到 dll 版本 14.0 后。 (如屏幕截图所示)一切正常。 我正在使用 VS2010 - 由于公司政策 - 我无法使用 VS2012。我在哪里可以找到参考管理器中的“扩展”?它是仅在 VS2012 中可用的功能吗?如果扩展在 VS2010 中不可用,我该如何添加引用?我在 .NET 程序集列表和 Office 目录中都找不到它。 如果我有 VS2013 Express 并且我在 Extension 和 Framework 列表中没有 Microsoft.Office 命名空间怎么办? :P【参考方案2】:

您也可以尝试通过包管理器在 Visual Studio 中安装它。

在包控制台中运行Install-Package Microsoft.Office.Interop.Excel。 这会自动将其添加为项目参考。

使用是这样的:

Using Excel=Microsoft.Office.Interop.Excel;

【讨论】:

【参考方案3】:

如果你有 VS 2013 Express 并且找不到 Microsoft.Office 命名空间,试试这个('Microsoft Excel 12.0 Object Library' 如果你想使用 Office 2007)

【讨论】:

经过几个小时的搜索,我终于找到了这一点,这可以解决我在通过 Nuget 包管理器和包管理器控制台添加后找不到 Microsoft.Office 的原因。互操作添加成功,但我仍然无法添加引用!!!非常令人沮丧。 VS2019。谢谢。【参考方案4】:

根据 Mulfix 的回答,如果您有 Visual Studio Community 2015,请尝试添加参考... -> COM -> 类型库 -> 'Microsoft Excel 15.0 Object Library'。

【讨论】:

【参考方案5】:

有一个名为 NetOffice 的开源项目可将其从您的项目中抽象出来,而不是早期绑定该引用,从而让生活变得更加轻松。这样您就不必依赖安装了特定版本的 Office 的用户。

NetOffice Codeplex site.

【讨论】:

【参考方案6】:

您必须检查您的目标是哪个版本的 Excel?

如果您的目标是 Excel 2010 使用版本 14(根据 Grant 的屏幕截图答案),Excel 2007 使用版本 12 。您无法使用 vS2012 支持 Excel 2003,因为它们没有安装正确的 Interop dll。

【讨论】:

以上是关于如何引用 Microsoft.Office.Interop.Excel dll?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Word文档中使用内容交叉引用

JVM如何理解强引用软引用弱引用虚引用?

JVM如何理解强引用软引用弱引用虚引用?

Swift如何实现通用类型的弱引用数组(上)

Swift如何实现通用类型的弱引用数组(下)

如何更改 C++ 引用所引用的变量?