web-dev-qa-db-fra.com

Puis-je toujours utiliser les assemblys Microsoft.Office.Interop avec office 2013?

J'ai dû importer un projet plus ancien (au format .Net 2) dans Visual Studio 2013, qui utilise les assemblys d'interopérabilité primaire de Microsoft.

Visual Studio a déclaré que je devais ajouter des références au projet. Maintenant, je suis allé lire un peu et apparemment, Microsoft n’a publié que le PIA pour Office 2010? (J'ai Office 2013)

Maintenant, ce que j'aimerais savoir, c'est.

  1. Puis-je le faire fonctionner avec office 2013 et être rétro-compatible?
  2. Et si oui, est-ce un bon moyen d’aller de l’avant? Est-ce que ça va être compatible? Parce que je vois que vous avez besoin de .Net 2 (au plus tard) et que Windows 8 est livré avec la version 4.5 et non 3 (par défaut) et que la plupart des nouveaux ordinateurs auront Office 2012 ou 2013.
45
Zapnologica

Les PIA sont un artefact historique, requis uniquement par les anciennes versions .NET (antérieures à la v4). Ils ont été remplacés de manière complète et élégante par la fonction "Types d'interopérabilité intégrés", également appelée fonction "Pas de PIA". Pris en charge depuis Visual Studio 2010, vous le retrouverez dans la fenêtre Propriétés lorsque vous sélectionnez un assemblage de référence. La valeur par défaut est True. Une bonne vidéo couvrant la technologie sous-jacente est disponible ici .

C'est la raison pour laquelle Microsoft ne publie pas les PIA pour Office 2013, mais s'attend à ce que vous intégriez les types d'interopérabilité.

Cette fonctionnalité est très souhaitable, elle évite à votre client d’installer les PIA sur sa machine et de les inclure à votre installateur. Résoudre le problème quand aucun des deux ne s'en occupe, un incident tout à fait commun. De plus, les PIA pour Office étant très volumineux, le grand avantage de l'incorporation des types d'interopérabilité est que votre assembly ne contient que les types que vous utilisez réellement. Beaucoup de mégaoctets réduits à quelques kilo-octets.

Le flux de travail est un peu différent. Au lieu d'ajouter une référence aux assemblys Microsoft.Office.Interop tels qu'ils sont disponibles dans la boîte de dialogue Ajouter une référence, onglet .NET Framework, vous utilisez maintenant l'onglet COM. Et choisissez, par exemple, "Microsoft Excel 15.0 Object Library" pour générer les types d'interopérabilité d'un programme utilisant Excel. Si vous chargez un ancien projet qui utilisait auparavant des PIA, supprimez simplement ces assemblages de référence et rajoutez-les à partir de l'onglet COM.

Notez qu'une fonctionnalité est perdue. Il est plus difficile de cibler intentionnellement une ancienne version d'Office que vous n'avez pas encore installée sur votre ordinateur dev. Si cela est nécessaire, vous avez toujours besoin des PIA pour cette version, forcez les types d'interopérabilité incorporés sur True dans la fenêtre Propriétés. Cela est douteux, Microsoft a du mal à maintenir les nouvelles versions d'Office complètement compatibles avec les anciennes. Cela fait 15 ans qu'ils le maintiennent, mais il manque de Steam. Le pire des scénarios est de cibler une version plus récente que celle que vous avez installée sur votre ordinateur, ce qui risquerait de faire planter votre programme avec very difficile à diagnostiquer des exceptions comme AccessViolationException

Notez que vous devez apporter de petites modifications à votre code pour lui permettre de fonctionner. Les classes synthétiques "XxxxClass" ne sont pas incorporées, mais uniquement les interfaces "Xxxx". Supprimez simplement le mot "Class" de l'instruction new.

119
Hans Passant

VS 2015 Community avec Office 365 - pour une raison quelconque, l'ajout de l'objet COM ne fonctionne pas. La solution est d'aller dans le GAC et de trouver les assemblys d'interopérabilité, de les copier dans un répertoire temporaire, puis de les ajouter à votre projet comme n'importe quelle DLL.

4
Rob

De plus, si vous ne le savez pas encore, Windows 8 a des versions plus anciennes de .NET Framework mais elles ne sont pas installées par défaut. Allez à Fonctions du programme ---> Ajouter des fonctionnalités à Windows ----> et la première case à cocher doit être .NET 3.0 et peut-être 2.0. Notez que si vous êtes sur un serveur WSUS, vous devrez indiquer à Windows de récupérer les fichiers des serveurs Windows Update. J'espère que ça aide!

1
amoor005

Officiellement, il n’existe pas de compatibilité ascendante de la PIA pour Office. En fait ça marche. 

Pour des raisons de compatibilité ascendante, j'utilise PIA pour Office XP depuis plusieurs années et fonctionne parfaitement avec Office XP, 2003, 2007 et 2010 (non encore testé avec 2013) et sous Windows XP, Vista, 7 et 8. . 

Pour assurer la compatibilité avec les différentes versions de Windows, j'utilise le .NET Framework 3.5.

Pour l'avenir ... cela dépend de ce que vous faites avec la PIA. Si possible, il est de loin préférable de traiter directement les fichiers Open XML ou de créer un complément pour Word/Excel.

0
pmartin

Je viens de découvrir que Visual Studio 2013 Express ne prend plus en charge la bureautique. Il vous faut donc au moins la version professionnelle pour que cela fonctionne. 

0
mr_w_snipes