Bonjour,

Je vous propose un nouvel élément à utiliser : Lire les propriétés des fichiers Microsoft Office avec VB.net

Voici deux façons de lire les propriétés des fichiers Office avec VB.net sans devoir ouvrir les fichiers. Une première façon avec le SDK Open XML et une seconde avec DSOFile.dll

Dans la suite de mon autre source sur les propriétés de fichiers multimédias, voici maintenant le tour des fichiers Office.

Au cours des années, j'ai trouvé et utilisé deux façons de lire les propriétés des fichiers Office de façon externe et sans ouvrir les fichiers dans leur application d'origine. Il s'agit de la DLL DSOFile et de la norme OpenXML.

DSOFile existe depuis longtemps et peut être téléchargée sur le site de Microsoft. À l'origine, elle était conçue pour traiter les fichiers OLE d'Office 2003 et avant. Microsoft l'a mise à jour pour ajouter le support des fichiers Open XML

Open XML a été introduit avec Office 2007. Même s'il peut être traité directement par le Framework .net avec System.IO.Packaging, Microsoft a eu la bonne idée de créer un SDK et d'encapsuler les appels à System.IO.Packaging dans une dll particulière : DocumentFormatOpenxml.dll. Cependant, cette dll est limitée aux fichiers Excel, Word et PowerPoint.

Si jamais mon programme braille qu'il ne retrouve DSOFile.dll ou DocumentFormatOpenxml.dll, vous devrez les télécharger le SDK Open XML et DSOFile (les liens fraîchement vérifiés sont fournis un peu plus bas) et les ajouter en référence, à la place des deux références qui vont être déclarées manquantes.

Pour ceux qui se demanderaient "pourquoi les deux méthodes ?", voici trois bonnes raisons:

- Le SDK Open XML ne peux rien faire avec les anciens fichiers Office (Office 2003 et avant).
- Même si DSOFile peut traiter les anciens et les nouveaux formats de fichiers Office, il ne retourne pas toutes les propriétés OpenXML.
- DSOFile n'est pas compatible avec les solutions "x64" et "anycpu" de Visual Studio. Pour l'utiliser avec Visual Studio, il faut absolument une solution "x86"

Cependant, la partie la moins drôle de l'histoire, c'est que les noms des propriétés ne sont pas toujours les mêmes, donc il y a des histoires de redondance dans l'utilisation des deux méthodes. J'ai trouvé, disons, une parade que j'ai rendue disponible dans le programme.

Pour "franciser" les noms des propriétés trouvées, et permettre à ceux qui voudraient faire la même chose dans une autre langue, j'ai utilisé un fichier Excel. La première ligne de chacune des feuilles est la propriété en anglais. La seconde ligne est ma traduction française du nom de la propriété. Pour ajouter vos propres traductions pour une autre langue, vous pouvez ajouter le code de la langue dans le Framework en colonne A et vos propres traductions dans les autres colonnes. J'ai mentionné plus haut les divergences des noms de propriétés et la parade que j'avais trouvée. C'est tout simple : à noms de propriété différents et équivalents, même traduction. Puis une sélection d'éléments distincts dans les tables de résultats. Puisque je sélectionne les éléments distincts, on ne récupère qu'une seule des propriétés. Dans le programme, j'appelle cela l'affichage sommaire ou l'affichage abrégé. D'un autre côté, l'affichage Complet donne tous les résultats, même ceux qui sont redondants.

Actuellement, le programme s'ouvre avec un ruban vide et inactif (c'est pour plus tard), et un menu caché. Pour voir le menu, remontez la barre de défilement de la feuille.

Liens utiles :

Télécharger le SDK Open XML


Documentation Open XML sur MSDN


Article sur DSOFile avec lien de téléchargement


Tutoriel sur DSOFile et VBA


Tutoriel de Éric Grimois


Tutoriel de Florian Casabianca


Open XML Developer

Tutoriel de Olivier Lebeau




Access Runtime pour lire le fichier Excel


Qu'en pensez-vous ?