我需要在.NET中使用Microsoft.Office.Interop.Excel,我需要什么参考?

113

我对使用C#来操作/自动化Excel文件很感兴趣。

在浏览网络后,我发现了VSTO,但似乎无法在Visual Studio Express版本中使用,因此我无法使用它。

就在几分钟前,我注意到这个网站上有一个问题,它在代码中使用了这个命名空间:

Microsoft.Office.Interop.Excel

我在想是否只需要添加必要的引用,如果需要,应该添加哪些引用?
更新:
如接受的答案所建议,我安装了“主要互操作程序集”,但由于某种原因,在“.NET”下的“添加引用”对话框中仍然缺少它们,但它们存在于GAC中。
因此,我使用“浏览”添加了引用,并在GAC文件夹中找到了Microsoft.Office.Interop.Excel.dll。
但是,在这个网站上寻找类似的问题时,似乎不推荐从GAC添加引用。
15个回答

108

更新(感谢user2347528)

这些程序集可作为NuGet软件包使用,比我的原始回答要简单得多。

您可以通过右键单击项目中的引用并选择管理NuGet软件包...,然后搜索下面列出的其中一个软件包进行安装,或者使用“程序包管理器控制台”进行安装:

PM> Install-Package Microsoft.Office.Interop.Excel

这些内容可以作为“主要互操作程序集”使用,可以随 Office 一起安装,或单独下载和安装。关于如何安装,请参阅“如何安装 Office 主要互操作程序集”

安装完成后,您可以在“添加引用”对话框中的.NET下引用它们到您的项目中。如果您没有看到 Microsoft.Office.Interop 程序集列表,则表示它们尚未安装。请从您的安装程序中安装它们,或单独下载并安装(请参阅上面的链接进行下载)。


1
这些是Visual Studio可以为.NET生成互操作程序集的COM服务。不建议您使用它们;您应该使用Microsoft发布的PIA程序集。它们应该出现在“添加引用”对话框中的.NET选项卡中。如果您没有看到它们,您需要从Office安装程序中安装PIA,或者根据我在回答中提供的链接单独下载它们。 - moribvndvs
2
@HackedByChinese 我在添加引用对话框中没有看到任何 .NET 选项卡。 - user773737
1
在Visual Studio 2013中,我在“添加引用”窗口左侧菜单的“程序集->扩展”下找到了这些引用。 - Benjamin Ray
1
我正在尝试在 Windows 2012 服务器上安装使用 Microsoft.Office.Interop.Excel.dll 的 C# 程序。该程序在我的 Windows 7 PC 上运行良好,但即使在服务器上安装了 PIA,我仍然收到有关缺少 System.Runtime.InteropServices.COM 组件的错误消息。当我尝试实例化 Excel.Application() 对象时,程序会中断。我还遗漏了其他什么吗? - Melanie
@Melanie 当然,为了确保,您必须在服务器上安装Office。除此之外,这是VS中的一个较新功能,可以帮助您进行部署:嵌入互操作类型。https://social.msdn.microsoft.com/Forums/office/en-US/32bf2a52-bffa-4cc8-a635-c75f36b623e9/cant-install-microsoftofficeinteropexceldll-on-windows-server-2012-r2?forum=exceldev - moribvndvs
显示剩余3条评论

50

我自己曾经遇到这个问题,但接受的答案对我没有帮助,我是通过以下步骤解决的:

添加引用 > 浏览 > C: > Windows > assembly > GAC >Microsoft.Office.Interop.Excel > 12.0.0.0_etc > Microsoft.Office.Interop.Excel.dll


2
我在各处寻找这个解决方案。 - Karim O.
3
谢谢你的建议。真是讽刺,微软自己竟然无法可靠地让这个工作正常运行——现在已经是2014年了,我们仍然直接引用.dll文件... - Mike Honey
12
“Add Reference” -> “COM” -> “Microsoft Excel 12.0 Object Library” 做的是同样的事情。 - primo
它能在服务器上运行吗?不需要在服务器上安装Office吗? - Naveen Katakam
好的,谢谢。你有任何想法吗?我可以在不安装 Office 的情况下使用它吗?我正在使用 Azure。 - Naveen Katakam

25

答案没有帮助我解决问题,即使我使用了Microsoft的msi安装程序进行了安装,我也找不到(和浏览)这些程序集。对我来说,Excel程序集位于C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll


在尝试了文件夹GAC、GAC_32和GAC_64之后,我认为它永远不会在最后一个文件夹GAC_MSIL中。但事实证明确实在那里。感谢您的评论。对我非常有帮助! - Marty_in_a_Box
最简单和最好的答案。谢谢,伙计。 - Wessam El Mahdy

8

只需添加 Microsoft.Office.Interop.Excel 的引用。

它包含了与 Microsoft Excel 相关的类,无需添加更多的引用。


1
那是我尝试的第一件事。但是找不到“Office”部分。 - user850010
其实我和@user850010有同样的问题,但最终我意识到我在我的解决方案中右键单击并添加了错误项目的引用文件夹。 - User

4

我猜你想通过using语句添加Microsoft.Office.Interop.Excel到你的应用中,但是没有在应用中添加它的引用,这种情况下它会找不到。在使用using语句之前,你需要将其作为引用添加到你的应用中。右键单击References并添加Excel Interop引用。


4

添加引用 > 浏览 > C: > Windows > assembly > GAC > Microsoft.Office.Interop.Excel > 12.0.0.0_wasd.. > Microsoft.Office.Interop.Excel.dll


4
我发现它位于VS2013中的Assemblies->Extensions下。 添加引用

3
我遇到了相同的问题,但这些答案都没能帮助我。我在我的电脑上找到了Mostey指出的dll文件:(C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll),但这不是我尝试构建项目时所引用的dll文件。
我们在Visual Studio 2012中的项目引用指向:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Visual Studio Tools for Office\。这个路径对于其他人来说都是有效的,但对我来说是空的。经过多次尝试,我终于找到了一个可行的安装程序。我希望这可以帮助其他人避免同样的麻烦!
--> Office Tools Bundle installer for VS2012 <--。
下载链接在Office文档和下载页面上。向下滚动到工具下载。目前也有一个针对VS2013的版本。

3
如果您安装了Microsoft Office,那么您应该能够添加对Interop.Excel的引用。
例如,我正在使用安装了MSVS 2010 C# Express和Office 2010的电脑。我可以添加对Microsoft.Office.Interop.Excel 11.0.0.0的引用。
希望这可以帮助您。

3
自2007年以来,使用Open XML SDK是最好的选择。 我们曾经使用Word.Interop,但有时会停止工作,并且不建议Microsoft将其用作服务器端文档格式化,因此Open XML SDK使您可以非常轻松地创建DOCX和Open XML格式的Word文档。 它让您能够很好地应对可扩展性、信心(如果文件损坏可以重建)和其他非常好的特性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接