Welche Referenz benötige ich, um Microsoft.Office.Interop.Excel in .NET zu verwenden?

101

Ich bin daran interessiert, C # zum Bearbeiten / Automatisieren von Excel-Dateien zu verwenden.

Nach dem Surfen im Internet habe ich VSTO gefunden, aber es scheint, dass Sie das in Visual Studio Express Edition nicht verwenden können, also kann ich das nicht verwenden.

Vor wenigen Minuten habe ich auf dieser Site eine Frage bemerkt, die diesen Namespace in ihrem Code verwendet hat:

Microsoft.Office.Interop.Excel

Ich frage mich also, ob ich nur die erforderliche Referenz hinzufügen muss und wenn ja, welche Referenz ich hinzufügen soll.

AKTUALISIEREN

Ich habe "Primary Interop Assemblies" wie in der akzeptierten Antwort vorgeschlagen installiert, aber aus irgendeinem Grund fehlen sie immer noch im Dialogfeld "Referenz hinzufügen" unter ".NET", sind aber in GAC vorhanden.

Also habe ich die Referenz einfach mit "Durchsuchen" hinzugefügt und mich Microsoft.Office.Interop.Excel.dllim GAC-Ordner befunden .

Wenn Sie jedoch auf dieser Website nach ähnlichen Fragen zum Hinzufügen von Referenzen von GAC suchen, wird dies anscheinend nicht empfohlen.

user850010
quelle

Antworten:

101

Update (danke user2347528)

Diese Baugruppen sind als NuGet-Pakete verfügbar, was viel einfacher ist als meine ursprüngliche Antwort.

Sie können entweder installieren, indem Sie mit der rechten Maustaste auf Referenzen in Ihrem Projekt klicken und NuGet-Pakete verwalten auswählen ... und nach einem der unten aufgeführten Pakete suchen, oder die Installation über die Package Manager-Konsole durchführen:

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

Diese sind als "Primary Interop Assemblies" verfügbar, die mit Office installiert oder separat heruntergeladen und installiert werden können. Gewusst wie: Installieren der primären Office-Interop-Assemblys .

Sobald diese installiert sind, können Sie sie in Ihrem Projekt im Dialogfeld "Referenz hinzufügen" unter .NET referenzieren. Wenn diese Microsoft.Office.Interop-Assemblys nicht aufgelistet sind, wurden sie noch nicht installiert. Installieren Sie sie von Ihrem Setup oder laden Sie sie separat herunter und installieren Sie sie (Downloads finden Sie oben unter meinem Link).

moribvndvs
quelle
Ich habe auf der Registerkarte "Com" eine Reihe von Komponenten mit dem Namen "Microsoft Office" gefunden.
user850010
1
Dies sind COM-Dienste, für die Visual Studio .NET-Interop-Assemblys generieren kann. Es wird nicht empfohlen, diese zu verwenden. Sie sollten die von Microsoft freigegebenen PIA-Assemblys verwenden. Sie sollten auf der Registerkarte .NET im Dialogfeld Verweise hinzufügen angezeigt werden. Wenn Sie sie nicht sehen, müssen Sie die PIA in Ihrem Office-Setup installieren oder separat herunterladen, wie in meiner Antwort angegeben.
moribvndvs
2
@ HackedByChinese Ich sehe keine .NET-Registerkarte im Dialogfeld "Referenzen hinzufügen"
1
In Visual Studio 2013 habe ich diese Referenzen unter Assemblies-> Extensions im linken Menü des Fensters Verweise hinzufügen gefunden.
Benjamin Ray
1
Ich versuche, ein C # -Programm zu installieren, das die Datei Microsoft.Office.Interop.Excel.dll auf einem Windows 2012-Server verwendet. Das Programm funktioniert auf meinem Windows 7-PC einwandfrei, aber auch nach der Installation der PIAs auf dem Server wird immer noch eine Fehlermeldung angezeigt, dass System.Runtime.Interop.COM-Komponenten fehlen. Das Programm bricht ab, wenn ich versuche, das Excel.Application () -Objekt zu instanziieren. Fehlt mir noch etwas?
Melanie
50

Hatte gerade dieses Problem selbst und akzeptierte Antwort half mir nicht, aber ich löste es mit:

Add reference > Browse > C: > Windows > assembly > GAC > Microsoft.Office.Interop.Excel > 12.0.0.0_etc > Microsoft.Office.Interop.Excel.dll

Robert
quelle
2
Ich habe überall nach dieser Lösung gesucht.
Karim O.
3
Danke für den Tipp. Es ist köstlich ironisch, dass Microsoft selbst dies nicht zuverlässig zum Laufen bringen kann - 2014 und wir verweisen immer noch direkt auf .dlls ...
Mike Honey
12
Add Reference-> COM-> Microsoft Excel 12.0 Object Librarymacht das gleiche.
Primo
Funktioniert es auf dem Server? ohne Office auf dem Server zu installieren?
Naveen Katakam
OK danke. hast du irgendeine Idee? Kann ich es verwenden, ohne Office zu installieren? Ich verwende Azure.
Naveen Katakam
24

Die Antworten haben mir nicht geholfen, mein Problem zu lösen. Ich konnte die Assemblys nicht finden (und durchsuchen), obwohl ich sie mit dem MSI-Installationsprogramm von Microsoft installiert habe. Für mich befindet sich die Excel-Baugruppe unterC:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll

0x8BADF00D
quelle
Nachdem ich den Ordner GAC, GAC_32 und GAC_64 ausprobiert hatte, dachte ich, dass er niemals im letzten Ordner GAC_MSIL sein wird. Aber es war. Vielen Dank für Ihren Kommentar. Hat super für mich funktioniert!
Marty_in_a_Box
Einfachste und beste Antwort. Danke Alter.
Wessam El Mahdy
8

Fügen Sie einfach die Referenz von hinzu Microsoft.Office.Interop.Excel.

Es enthält MicroSoft Excel-bezogene Klassen, ohne dass weitere Referenzen hinzugefügt werden müssen.

RAKESH HOLKAR
quelle
1
Das ist das erste, was ich versucht habe. Der Teil "Office" wurde jedoch nicht gefunden.
user850010
Hatte eigentlich das gleiche Problem wie @ user850010, stellte aber schließlich fest, dass ich mit der rechten Maustaste auf den Referenzordner des falschen Projekts in meiner Lösung klickte und diesen hinzufügte.
Benutzer
4

Ich denke , was Sie zu tun versuchen hinzuzufügen , ist Microsoft.Office.Interop.Excelmit usingmit Anweisung aus seiner Referenz in Ihrer Anwendung hinzufügen, in diesem Fall es wird nicht gefunden werden. Bevor Sie es mit einer usingAnweisung aufrufen, müssen Sie einen Verweis auf Ihre Anwendung hinzufügen. Klicken ReferencesSie mit der rechten Maustaste auf und fügen Sie die Excel InteropReferenz hinzu.

Misam
quelle
4

Referenz hinzufügen> Durchsuchen> C:> Windows> Assembly> GAC> Microsoft.Office.Interop.Excel> 12.0.0.0_wasd ..> Microsoft.Office.Interop.Excel.dll

Turanian
quelle
4

Ich fand es unter Assemblies-> Extensions in VS2013.

Referenz hinzufügen

bluebunny72
quelle
3

Wenn Sie Microsoft Office installiert haben, sollten Sie in der Lage sein, einen Verweis auf Interop.Excel hinzuzufügen.

Der PC, auf dem ich dies schreibe, verfügt beispielsweise über MSVS 2010 C # Express und Office 2010. Ich kann einen Verweis auf Microsoft.Office.Interop.Excel 11.0.0.0 hinzufügen.

'Hoffentlich hilft das

paulsm4
quelle
3

Es befindet sich in der com-Komponente mit dem Namen "Microsoft Office 14 Object Library".

James Tan
quelle
1
VS2010: Durch Hinzufügen eines COM-Verweises zu "Microsoft Office 14 Object Library" wird nur ein Verweis zu "Microsoft.Office.Core" hinzugefügt. Besser: Verwenden Sie die COM-Referenz "Microsoft Excel 14.0 Object Library". Es verweist direkt auf die installierte ausführbare Excel-Datei, wird jedoch als Verweis auf "Microsoft.Office.Core" und "Microsoft.Office.Interop.Excel" angezeigt. Sollte helfen, wenn Sie nur auf Computern ausführen und bereitstellen müssen, auf denen Excel installiert ist.
JS
3

Die beste Option seit Office 2007 ist die Verwendung von Open XML SDK . Wir haben Word.Interop verwendet, aber es wird manchmal angehalten, und es wird Microsoft nicht empfohlen, es als serverseitige Dokumentformatierung zu verwenden. Mit Open XML SDK können Sie also sehr einfach Word-Dokumente in den Formaten DOCX und Open XML erstellen. Sie können mit Scability, Vertrauen (die Dateien können, wenn sie beschädigt sind, können sie neu erstellt werden) und anderen sehr guten Eigenschaften gut umgehen.

JosefMadrid
quelle
2

Hier ist eine super solide Lösung, Sie müssen nur excell.dll in Ihrem Debug / Release-Ordner haben. Meine ist 77.824 Bytes. Ich habe sie als Datei heruntergeladen. Dies erklärt auch, warum einige Leute Debug kompiliert haben, Release aber nicht oder umgekehrt.

Trento

Mario Trento
quelle
2

Ich hatte nur das gleiche Problem, aber keine dieser Antworten half mir. Ich habe die DLL auf meinem PC an der Stelle gefunden, an der Mostey Folgendes notiert hat: ( C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll), aber dies ist nicht diejenige, auf die in dem Projekt verwiesen wurde, das ich bauen wollte.

Die Referenz in unserem Projekt in Visual Studio 2012 zeigte auf C:\Program Files (x86)\Microsoft Visual Studio 11.0\Visual Studio Tools for Office\. Dieser Ort war für mich leer, aber für alle anderen hat es gut funktioniert. Es dauerte einige Versuche, aber ich habe endlich einen funktionierenden Installer gefunden. Ich hoffe, das erspart anderen den gleichen Ärger!

-> Installationsprogramm für Office Tools Bundle für VS2012 <-

Dies befand sich auf der Seite Office-Dokumentation und Download . Scrollen Sie nach unten zu Tools Downloads . Derzeit gibt es auch eine für VS2013.

thehelix
quelle
1

1.Download und Installation: Microsoft Office Developer Tools

2. Fügen Sie Referenzen hinzu von:

C: \ Programme (x86) \ Microsoft Visual Studio 11.0 \ Visual Studio-Tools für Office \ PIA \ Office15

Artur Tarnowski
quelle
1

Ich hatte das gleiche Problem und Microsoft.Office.Interop wurde nach dem Upgrade von VS2012 auf VS2015 nicht in der Option "Referenz hinzufügen" angezeigt. Grundsätzlich habe ich die Installation repariert ( Systemsteuerung> Programme und Funktionen> VS 2012> Rechtsklick auf Ändern> Reparieren ) und die Microsoft Office-Komponente hinzugefügt. Danach begann die gleiche Lösung zu funktionieren.

sk1900
quelle
0

Stellen Sie sicher, dass Ihr Projekt 32 Bit ist.

Ich hatte dieses Problem, sobald ich "Office 32 bevorzugen und 32 Office neu erstellen" angekreuzt hatte, sofern verfügbar unter Referenz-> Assemblys-> Suche "Office".

spludlow
quelle