Utilisation de Open XML pour .NET en C#

microsoft

Microsoft Office Open XML est un standard permettant la lecture, la création ou la modification de documents Office (Excel, Word et PowerPoint). La technologie utilisée est du XML. Tous les fichiers Office depuis la version 2007 sont des fichiers "ZIP". Ils respectent une architecture bien précise. De ce fait, les documents sont accessibles de manière universelle.

Avantages et inconvenients

  • Amélioration de la gestion des fichiers, des données, de la récupération des données ;
  • Toute application prenant en charge XML peut accéder aux données et les utiliser ;
  • L'application n'a pas besoin de faire partie du système Microsoft Office, ni même d'un produit Microsoft ;
  • Les utilisateurs peuvent également employer des transformations standards pour extraire ou réutiliser les données ;
  • Problèmes de sécurité réduits: les informations sont stockées au format XML (texte brut). Les données peuvent donc transiter via les pares-feu d'entreprise.

Pour résumer, Open XML permet l'intégration facile d'informations métier dans les documents, est ouvert et gratuit, interopérable, robuste, efficace, sécurisé et enfin offre une compatibilité descendante.

Structure des formats

2016-04-18_114445

Le format de fichier est basé sur la spécification du format de fichier ZIP compressé.

L'utilisation de schémas de référence XML et d'un conteneur ZIP est au cœur des nouveaux formats de fichier Office XML "FormatsInteropérable".

Chaque fichier est constitué d'un ensemble de parties ; cet ensemble définit le document.

Dans un package au format Office XML Formats, de nombreuses parties logiques du fichier sont stockées sous forme de fichiers ou de parties individuel(le)s. Cette modularité est l'une des caractéristiques importantes du format de fichier. La modularité vous permet de localiser rapidement une partie spécifique et de travailler directement avec seulement cette partie. Vous pouvez modifier, échanger ou même supprimer des parties de documents en fonction du résultat préféré d'un besoin métier spécifique. (Source Microsoft)

Dossier _rels

Ce dossier contient un fichier .rels qui redéfinit les relations racines dans le package. Il s'agit du point de départ pour analyser le package.

Fichier .rels

Contient les relations basées sur la partie de départ (la partie de départ virtuelle). Les relations sont définies avec le format suivant :

<Relationship Id="someID" Type="relationshipType" Target="targetPart"/>

Id est une chaîne quelconque, sous réserve qu'elle soit unique dans le fichier .rels.

Type : Type de la relation, qui distingue les relations les unes des autres et offre un conseil concernant l'objectif de la relation. Il pointe vers le schéma qui définit les types Office XML Formats.

Target: Pointe vers le dossier et le fichier contenant la cible de la relation (une autre partie).

Partie principale du document

La cible de la relation http://schemas.microsoft.com/office/2006/relationships/officeDocument est la partie principale qui définit le document (partie présentation pour PowerPoint, partie classeur pour Excel et partie document pour Word). Toutes les autres relations sont basées sur la partie document principale.

Dossier Application

Contient des fichiers de composants de documents propres à l'application, tels que (pour Word) :

  • wordDocument.xml: Contient les données (texte) du document, ainsi que les styles et les paramètres de police.
  • footer.xml: Contient des informations sur les pieds de page du document, par exemple la page sur laquelle ils se trouvent et certaines informations relatives aux styles.
  • header.xml: Contient des informations semblables à celles du fichier footer.xml, mais concernant les en-têtes.
  • wordDocument.doc: Copie du document original.
  • styles.xml: Contient des informations sur les styles trouvés dans le document, par exemple les tailles des polices, les styles de tableau et les listes à puce.

Fichier audio

Contient n'importe quel fichier de type audio, par exemple .mid, .mp3 ou .wav.

Fichier Content_Types.xml

Fournit la liste des types de contenu pour les autres parties du package. Les types de contenu sont définis comme les types de parties pouvant être stockés dans un package.

Partie propriétés du document

Contient les propriétés essentielles du document, définies pour tous les fichiers conformes au format XPS, par exemple l'auteur, le titre, la date de création...

Open XML SDK

Le kit de développement logiciel (SDK) repose sur l'API System.IO.Packaging. Il simplifie la tâche de manipulation des packages Open XML et des éléments de schéma Open XML sous-jacents dans un package. Pour chaque projet utilisant le SDK, on référence les composants suivants :

  • DocumentFormat.OpenXml
  • WindowsBase

Exemple d'implémentation

Dans l'exemple ci-dessous, nous créons un fichier Word utilisant le SDK fournit par Microsoft.

L'objet MainDocumentPart représente le document, ou la structure tel que définit ci-dessus. Le SDK se charge de créer les fichiers et répertoires nécessaires à l'ouverture du document dans Word.

Nous créons ensuite "le corps"(Body) du document qui recevra à son tour un paragraphe contenant du texte en gras.

2016-04-18_121832

Quelle est la structure XML du document ?

2016-04-18_122951Outil : Open XML Productivity Tool

Open XML Productivity Tool est un excellent logiciel que Microsoft met à la disposition des développeurs. Il s'agit d'un explorateur de packages. Cet outil vous permet d'analyser vos documents en cas d'erreurs, de les valider et de générer du code C#.

2016-04-18_124154

Conclusion

Créer ou modifier des fichiers Open XML n'a jamais été aussi simple. Microsoft, grâce à son SDK et à Open XML Productivity Tool donne libre choix aux entreprises de manipuler leur fichiers office comme ils le souhaitent. Néanmoins, il ne faut jamais penser que cela est "trop facile". Il existe donc de nombreuses documentations. Je ne citerai que les meilleures :

Bonne génération de fichier à tous !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.