De quelle référence ai-je besoin pour utiliser Microsoft.Office.Interop.Excel dans .NET?

102

Je suis intéressé par l'utilisation de C # pour manipuler / automatiser des fichiers Excel.

Après avoir parcouru le Web, j'ai trouvé VSTO mais il semble que vous ne pouvez pas l'utiliser dans Visual Studio Express Edition, donc je ne peux pas l'utiliser.

Il y a quelques minutes, j'ai remarqué une question sur ce site qui utilisait cet espace de noms dans son code:

Microsoft.Office.Interop.Excel

Je me demande donc si tout ce dont j'ai besoin pour utiliser c'est ajouter la référence nécessaire et si oui, quelle référence ajouter?

METTRE À JOUR

J'ai installé "Primary Interop Assemblies" comme la réponse acceptée le suggérait, mais pour une raison quelconque, ils sont toujours manquants dans la boîte de dialogue Ajouter une référence sous ".NET" mais ils sont présents dans GAC.

Je viens donc d'ajouter la référence en utilisant "Parcourir" et située Microsoft.Office.Interop.Excel.dlldans le dossier GAC.

Mais à la recherche de questions similaires sur ce site concernant l'ajout de références du GAC, il semble que cela ne soit pas recommandé.

user850010
la source

Réponses:

102

Mise à jour (merci user2347528)

Ces assemblys sont disponibles en tant que packages NuGet, ce qui est beaucoup plus facile que ma réponse d'origine.

Vous pouvez installer soit en cliquant avec le bouton droit sur Références dans votre projet et en sélectionnant Gérer les packages NuGet ... et en recherchant l'un des packages répertoriés ci-dessous, soit en effectuant l' installation à l'aide de la console du gestionnaire de packages:

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

Ceux-ci sont disponibles en tant qu '«assemblages d'interopérabilité primaires», qui peuvent être installés avec Office ou téléchargés et installés séparément. Comment: installer des assemblys d'interopérabilité principaux Office .

Une fois ceux-ci installés, vous pouvez les référencer dans votre projet dans la boîte de dialogue Ajouter une référence, sous .NET. Si vous ne voyez pas ces assemblys Microsoft.Office.Interop répertoriés, c'est qu'ils n'ont pas encore été installés. Installez-les à partir de votre configuration, ou téléchargez-les et installez-les séparément (voir mon lien ci-dessus pour les téléchargements).

moribvndvs
la source
J'ai trouvé un tas de composants dans l'onglet "Com" nommé Microsoft Office .... Est-ce que c'est ça?
user850010
1
Ce sont des services COM pour lesquels Visual Studio peut générer des assemblys d'interopérabilité .NET. Il n'est pas recommandé de les utiliser; vous devez utiliser les assemblys PIA publiés par Microsoft. Ils doivent apparaître dans l'onglet .NET de la boîte de dialogue Ajouter des références. Si vous ne les voyez pas, vous devez installer le PIA à partir de votre configuration Office ou les télécharger séparément comme je l'ai lié dans ma réponse.
moribvndvs
2
@HackedByChinese Je ne vois aucun onglet .NET dans la boîte de dialogue Ajouter des références
1
Dans Visual Studio 2013, j'ai trouvé ces références sous Assemblies-> Extensions dans le menu de gauche de la fenêtre Ajouter des références.
Benjamin Ray
1
J'essaie d'installer un programme C # qui utilise Microsoft.Office.Interop.Excel.dll sur un serveur Windows 2012. Le programme fonctionne correctement sur mon PC Windows 7, mais même après avoir installé les PIA sur le serveur, je reçois toujours un message d'erreur concernant les composants System.Runtime.Interop.COM manquants. Le programme s'arrête lorsque j'essaye d'instancier l'objet Excel.Application (). Y a-t-il autre chose qui me manque?
Melanie le
50

J'ai juste eu ce problème moi-même et la réponse acceptée ne m'a pas aidé, mais je l'ai résolu avec:

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

Robert
la source
2
Je cherchais cette solution partout.
Karim O.
3
Merci pour le conseil. Il est délicieusement ironique que Microsoft lui-même ne puisse pas faire fonctionner cela de manière fiable - 2014 et nous nous référons toujours directement aux .dlls ...
Mike Honey
12
Add Reference-> COM-> Microsoft Excel 12.0 Object Libraryfait de même.
primo
Cela fonctionne-t-il sur le serveur? sans installer le bureau sur le serveur?
Naveen Katakam
OK merci. avez-vous une idée? puis-je l'utiliser sans installer de bureau .. J'utilise azur.
Naveen Katakam
24

Les réponses ne m'ont pas aidé à résoudre mon problème, je n'ai pas pu trouver (et parcourir) les assemblys bien que je les ai installés à l'aide du programme d'installation msi de Microsoft. Pour moi, l'assemblage Excel est situé sousC:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll

0x8BADF00D
la source
Après avoir essayé le dossier GAC, GAC_32 et GAC_64, j'ai pensé qu'il ne serait jamais dans le dernier dossier GAC_MSIL. Mais c'était. Merci pour votre commentaire. A très bien fonctionné pour moi!
Marty_in_a_Box
Réponse la plus simple et la meilleure. Merci mec.
Wessam El Mahdy
8

Ajoutez simplement une référence à Microsoft.Office.Interop.Excel.

Il comprend des classes liées à MicroSoft Excel, pas besoin d'ajouter plus de références.

RAKESH HOLKAR
la source
1
C'est la première chose que j'ai essayée. Mais la partie "Office" est introuvable.
user850010
En fait, j'ai eu le même problème que @ user850010 mais j'ai finalement réalisé que je faisais un clic droit et que j'ajoutais le dossier de références du mauvais projet dans ma solution.
Utilisateur
4

Je suppose que ce que vous essayez de faire est d'ajouter Microsoft.Office.Interop.Excelune usingdéclaration sans ajouter sa référence dans votre application, dans ce cas, elle ne sera pas trouvée. Avant de l'appeler avec usinginstruction, vous devez ajouter une référence à votre application. Faites un clic droit sur Referenceset ajoutez la Excel Interopréférence.

Misam
la source
4

Ajouter une référence> Parcourir> C:> Windows> assembly> GAC> Microsoft.Office.Interop.Excel> 12.0.0.0_wasd ..> Microsoft.Office.Interop.Excel.dll

Turanien
la source
4

Je l'ai trouvé sous Assemblies-> Extensions dans VS2013.

Ajouter une référence

bluebunny72
la source
3

Si Microsoft Office est installé, vous devriez pouvoir ajouter une référence à Interop.Excel.

Par exemple, le PC sur lequel je tape ceci a MSVS 2010 C # Express et Office 2010. Je peux ajouter une référence à Microsoft.Office.Interop.Excel 11.0.0.0.

'J'espère que cela pourra aider

paulsm4
la source
3

son dans le composant com, nommé: "Microsoft Office 14 Object Library"

James Tan
la source
1
VS2010: L'ajout d'une référence COM à «Microsoft Office 14 Object Library» ajoute uniquement une référence à «Microsoft.Office.Core». Mieux: utilisez la référence COM "Microsoft Excel 14.0 Object Library". Il pointe directement vers l'exécutable Excel installé, mais apparaîtra comme une référence à la fois à «Microsoft.Office.Core» et «Microsoft.Office.Interop.Excel». Cela devrait vous aider si vous ne devez exécuter et déployer que sur des machines sur lesquelles Excel est installé.
JS
3

La meilleure option depuis Office 2007 utilise le SDK Open XML pour cela. Nous avons utilisé Word.Interop mais il s'arrête parfois, et il n'est pas recommandé à Microsoft, de l'utiliser comme formatage de document côté serveur, donc Open XML SDK vous permet de créer très facilement des documents Word aux formats DOCX et Open XML. Cela vous permet de bien fonctionner avec la scability, la confiance (les fichiers, s'ils sont corrompus peuvent être reconstruits), et d'autres caractéristiques très fines.

JosefMadrid
la source
2

Voici une solution super solide, vous avez juste besoin d'avoir excell.dll dans votre dossier Debug / Release Le mien est de 77 824 octets, je l'ai téléchargé sous forme de fichier, cela explique également pourquoi certaines personnes ont compilé Debug mais Release pas ou vice versa.

Trente

Mario Trento
la source
2

J'ai juste eu le même problème, mais aucune de ces réponses ne m'a aidé. J'ai trouvé la dll sur mon PC à l'emplacement que Mostey a noté: ( C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll), mais ce n'est pas celui qui était référencé dans le projet que j'essayais de construire.

La référence dans notre projet dans Visual Studio 2012 pointait vers C:\Program Files (x86)\Microsoft Visual Studio 11.0\Visual Studio Tools for Office\. Cet endroit était vide pour moi, mais cela fonctionnait bien pour tout le monde. Cela a pris un certain nombre d'essais, mais j'ai finalement retrouvé un installateur fonctionnel. J'espère que cela évitera aux autres les mêmes tracas!

-> Programme d'installation de l'offre d'outils Office pour VS2012 <-

Cela se trouvait sur la page de documentation et de téléchargement Office . Faites défiler jusqu'à Téléchargements d'outils . Il y en a actuellement un pour VS2013.

l'hélix
la source
1

1.Téléchargez et installez: Outils de développement Microsoft Office

2.Ajoutez des références de:

C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Visual Studio Tools pour Office \ PIA \ Office15

Artur Tarnowski
la source
1

J'ai eu le même problème et Microsoft.Office.Interop n'apparaissait pas dans l'option "Ajouter une référence" une fois que j'ai mis à niveau VS2012 vers VS2015. J'ai essentiellement réparé l'installation ( Panneau de configuration> Programmes et fonctionnalités> VS 2012> Clic droit Modifier> Réparer ) et ajouté le composant Microsoft Office. Après cela, la même solution a commencé à fonctionner.

sk1900
la source
0

Assurez-vous que votre projet est 32 bits.

J'ai eu ce problème, dès que j'ai coché "Préférer 32 bits et reconstruire" tous les assemblys Office Interop disponibles dans Référence-> Assemblies-> Rechercher "Office".

éclaboussure
la source