Création de systèmes de génération de documents à partir de modèles avec Word 2010 et Word 2007

Résumé :   certains scénarios d’entreprise nécessitent la génération de nombreux documents à l’aide d’un modèle de document et d’une source de données. Cet article contient des instructions relatives à ce scénario et des liens vers des articles MSDN et des billets de blogs.

Dernière modification : lundi 9 mars 2015

S’applique à : Office 2007 | Office 2010 | Open XML | Visual Studio Tools for Microsoft Office | Word 2007 | Word 2010

Dans cet article
Création de systèmes de génération de documents à partir d’un modèle
Remplacement de contrôles de contenu par du contenu
Liaison de contrôles de contenu à du XML dans des composants XML personnalisés
Gestion d’événements lors de la manipulation de contrôles de contenu
Conclusion

Publication :   mars 2010

Auteur :Eric White (éventuellement en anglais), Microsoft Corporation

Sommaire

  • Création de systèmes de génération de documents à partir d’un modèle

  • Remplacement de contrôles de contenu par du contenu

  • Liaison de contrôles de contenu à du XML dans des composants XML personnalisés

  • Gestion d’événements lors de la manipulation de contrôles de contenu

  • Conclusion

Création de systèmes de génération de documents à partir d’un modèle

Il arrive que des systèmes logiciels doivent générer automatiquement des documents afin de prendre en charge différents scénarios. La conception du système peut inclure la possibilité, pour un expert, de créer un modèle de document sur lequel repose la génération. Ce modèle doit déterminer les zones spécifiques du document devant être remplacées par du contenu généré automatiquement. Par exemple, un espace réservé dans le document doit être remplacé par une formule de salutation et le nom du destinataire de la lettre. Par ailleurs, le modèle peut identifier des sections spécifiques du document à supprimer du document généré. Par exemple, un modèle de document juridique peut inclure toutes les clauses juridiques possibles mais, sur la base de circonstances spécifiques, certaines clauses sont omises dans le document généré. La numérotation des en-têtes et des sections du document généré doit être ajustée automatiquement en conséquence.

Les contrôles de contenu conviennent parfaitement à ce scénario. Il est très facile d’inclure des contrôles de contenu grâce à l’insertion de macros à cet effet. Vous pouvez définir automatiquement le titre et l’étiquette du contrôle de contenu dans la macro, ou encore développer un complément managé qui crée un Ruban personnalisé avec des boutons permettant d’ouvrir diverses instances de contrôles de contenu. Vous pourriez par exemple avoir des boutons qui insèrent des contrôles de contenu avec un jeu spécifique de balises tels que Nom, Adresse, Téléphone et Clause_juridique.

Il est parfois nécessaire de conserver des informations secondaires relatives à chaque contrôle de contenu. Peut-être souhaiterez-vous autoriser le concepteur de documents à définir un ensemble spécifique de propriétés pour chacun d’eux. Les contrôles de contenu n’offrent pas de fonctionnalité telle qu’un attribut ou élément spécial dans le balisage pour le stockage de ces informations. Par ailleurs, l’interface utilisateur de Microsoft Word 2010 et Microsoft Office Word 2007 ne permet pas au concepteur de document de conserver des informations secondaires pour un contrôle de contenu. Il existe cependant un moyen de permettre au concepteur de document de créer et de configurer des informations associées à chaque contrôle de contenu. Pour plus d’informations sur ce processus, voir Association de données à des contrôles de contenu (éventuellement en anglais). Ce billet de blog montre un complément managé qui crée un volet Office personnalisé pour la conservation de ces informations. Ces informations secondaires sont stockées dans un composant XML personnalisé. Les informations relatives à chaque contrôle de contenu sont associées à un ID unique généré automatiquement par Word pour chaque contrôle de contenu. La figure suivante tirée de cet exemple montre un volet Office qui permet à l’auteur du contenu de définir des informations secondaires sur un contrôle de contenu.

Figure 1. Exemple de volet Office personnalisé pour la modification de données de contrôle de contenu secondaires

Utilisation du volet Office pour modifier les métadonnées

Conseil

Le billet de blog intitulé Association de données à des contrôles de contenu (éventuellement en anglais) illustre comment créer un volet Office au niveau de l’application. Une autre approche consiste à créer un volet Office associé à chaque document. Cette deuxième solution peut convenir davantage à certains scénarios, par exemple si vous avez de nombreux types de documents et que vous souhaitez conserver différentes informations pour les contrôles de contenu dans chaque type de document.

Lorsque vous créez un volet Office personnalisé dans une application qui utilise plusieurs fenêtres pour afficher des documents et autres éléments, vous devez prendre des mesures supplémentaires afin de vous assurer que le volet Office est visible lorsque l’utilisateur s’attend à ce qu’il le soit. L’article intitulé Managing Custom Task Panes in Multiple Application Windows décrit ce qu’il faut savoir sur le fonctionnement des volets de tâches avec les interfaces multidocuments (MDI, Multiple Document Interfaces). L’article intitulé Managing Task Panes in Multiple Word and InfoPath Documents fournit davantage de détails et un exemple de code.

Synthèse des ressources

Titre

Description

Creating Custom Task Panes in the 2007 Office System

Présente les volets de tâches personnalisés.

Actions Pane Overview

Fournit des informations sur la façon de créer des projets de compléments managés au niveau du document.

Managing Custom Task Panes in Multiple Application Windows

Décrit ce qu’il faut savoir sur le fonctionnement des volets de tâches avec les interfaces multidocuments.

Managing Task Panes in Multiple Word and InfoPath Documents

Fournit des détails sur la façon de créer des compléments managés qui fonctionnent correctement dans un environnement MDI.

Custom Task Panes, the Office Fluent Ribbon, and Reusing VBA Code in the 2007 Office System

Traite d’un projet réel qui utilise des volets de tâches personnalisés. Fournit des détails sur l’utilisation du modèle objet Word 2007 et sur les rouages internes des fonctionnalités de programmabilité.

Working with Content Controls

Fournit une introduction aux contrôles de contenu.

How To: Add Content Controls to Word Documents

Explique comment créer des projets au niveau du document et des projets au niveau de l’application qui ajoutent des contrôles de contenu au moment du design ou de l’exécution.

Building Word 2007 Document Templates Using Content Controls

Explique comment écrire du code de complément managé qui accède à des contrôles de contenu.

Association de données à des contrôles de contenu (éventuellement en anglais)

Fournit des instructions et un exemple qui illustre comment associer des quantités arbitraires de données à chaque contrôle de contenu dans un document.

Articles de procédures sur MSDN

Contient plusieurs rubriques axées sur les contrôles de contenu et sur la liaison aux contrôles de contenu dans différents scénarios.

Vidéos de procédures pour Word 2007 (éventuellement en anglais)

Contient plusieurs rubriques (avec vidéos) qui illustrent comment implémenter divers scénarios nécessitant une programmation.

Remplacement de contrôles de contenu par du contenu

Il existe deux approches : remplacer complètement le contrôle de contenu par le contenu ou lier le contrôle de contenu à du XML dans un composant XML personnalisé. Les sections suivantes explorent chacune de ces approches en détail.

Il peut arriver que vous souhaitiez supprimer complètement les contrôles de contenu du document généré et les remplacer par du texte ou du contenu spécifique. Les ressources suivantes fournissent des instructions et des exemples sur la façon d’implémenter ce scénario.

Synthèse des ressources

Titre

Description

Creating Documents by Using the Open XML Format SDK 2.0 (Part 1 of 3)

Explore l’architecture des contrôles de contenu et explique comment utiliser le kit Open XML SDK 2.0 pour Microsoft Office pour rechercher des contrôles de contenu spécifiques et les remplacer par un autre contenu.

Creating Documents by Using the Open XML Format SDK 2.0 (Part 3 of 3)

Explique comment utiliser la fonctionnalité altChunk du format de document pour assembler un document à partir de plusieurs parties. Bien que l’exemple présenté dans cet article utilise l’objet altChunk, une alternative consiste à remplacer le contrôle de contenu par du contenu formé d’éléments de texte, de séquences et de paragraphes WordprocessingML.

Utilisation de DocumentBuilder avec des contrôles de contenu pour l’assemblage de documents (éventuellement en anglais)

Présente une approche permettant d’assembler un document en remplaçant des contrôles de contenu par du contenu provenant d’autres documents. Le résultat est un document qui ne contient pas d’éléments altChunk et peut être traité ultérieurement par des outils Open XML.

Comparaison d’altChunk et de la classe DocumentBuilder

Compare et contraste deux méthodes de remplacement de contrôles de contenu par du nouveau contenu.

Génération de documents à partir de SharePoint avec des contrôles de contenu Open XML (éventuellement en anglais)

Illustre une approche permettant de remplacer entièrement des contrôles de contenu par du nouveau contenu. Explique comment utiliser des contrôles de contenu pour configurer un objet tableau remplacé par un nouvel objet tableau ayant une ligné générée pour chaque ligne dans vos données. Bien que cet article concerne SharePoint Server 2007, il contient du code de création de documents Open XML qui n’est pas spécifique à SharePoint Server 2007.

Liaison de contrôles de contenu à du XML dans des composants XML personnalisés

Une autre manière d’utiliser des contrôles de contenu pour générer des documents consiste à lier les contrôles de contenu à des données XML personnalisées. Cette approche présente un avantage : lors de la génération du document personnalisé, il n’est pas nécessaire de former de WordprocessingML pour remplacer les contrôles de contenu. Au lieu de cela, si vous débutez avec un document comportant déjà des contrôles de contenu liés à des données XML personnalisées, il vous suffit de remplacer le composant XML personnalisé par des données XML qui contiennent les données destinées au nouveau document. Les contrôles de contenu liés aux données sont mis à jour automatiquement avec les nouvelles données.

<w:sdt>
  <w:sdtPr>
    <w:alias w:val="Name"/>
    <w:tag w:val="Name"/>
    <w:id w:val="13264407"/>
    <w:dataBinding
      w:xpath="/Root/Name"w:storeItemID="{F351E99C-3283-4B75-927A-A56C9FD3BFFC}"/>
    <w:text/>
  </w:sdtPr>
  <w:sdtContent>
    <w:tc>
      <w:tcPr>
        <w:tcW w:w="4410"
               w:type="dxa"/>
      </w:tcPr>
      <w:p>
        <w:r>
          <w:t>Eric White</w:t>
        </w:r>
      </w:p>
    </w:tc>
  </w:sdtContent>
</w:sdt>

L’élément w:storeItemId contient un GUID qui indique la relation avec le composant XML personnalisé spécifique. L’élément w:xpath contient le chemin d’accès à l’élément lié dans le composant XML personnalisé.

L’une des particularités de cette approche est le fait que les contrôles de contenu restent dans le document généré, ce qui est susceptible de ne pas convenir à votre scénario.

Synthèse des ressources

Titre

Description

Binding Data to Word 2007 Content Controls Using Visual Studio Tools for the Office System (3.0)

Article et vidéo qui expliquent comment lier des données à des contrôles de contenu.

Creating Documents by Using the Open XML Format SDK 2.0 (Part 3 of 3)

Explique comment lier des contrôles de contenu à des données XML personnalisées.

Création de contrôles de contenu liés aux données à l’aide du kit Open XML SDK et de LINQ to XML

Explique comment utiliser le kit Open XML SDK 2.0 pour Microsoft Office avec LINQ to XML pour lier des contrôles de contenu à des données XML.

Tirer parti des contrôles de contenu liés (éventuellement en anglais)

Donne un autre exemple de liaison de contrôles de contenu à des données XML dans un composant XML personnalisé. Le blog de l’équipe de produit Office Word contient également un excellent billet (éventuellement en anglais) relatif aux contrôles de contenu liés aux données.

Boîte à outils de contrôles de contenu Word (éventuellement en anglais)

Projet CodePlex qui fournit une solution glisser-déplacer pour la liaison de contrôles de contenu à des données XML.

How to: Bind a Content Control to a Node in the Data Store

Fournit un exemple de liaison de contrôle de contenu à des données dans un composant XML personnalisé.

How to: Bind Controls to a Specific Row in the Data Store When Inserting a Building Block

Présente du code de complément managé qui lie un contrôle de contenu à une ligne spécifique dans le magasin de données.

Gestion d’événements lors de la manipulation de contrôles de contenu

Dans votre solution, vous souhaiterez peut-être effectuer une action spécifique lorsqu’un contrôle de contenu est inséré, supprimé ou mis à jour. Par exemple, vous pouvez écrire un gestionnaire d’événements appelé lorsque l’utilisateur se déplace hors d’un contrôle de contenu. Vous pouvez ensuite valider les données entrées par l’utilisateur.

Les événements de contrôles de contenu sont associés à l’objet Document. Vous pouvez écrire des gestionnaires pour les événements suivants.

Titre

Description

ContentControlAfterAdd Event

Se produit lorsque vous ajoutez un contrôle de contenu à un document.

ContentControlBeforeContentUpdate Event

Se produit avant la mise à jour du contenu dans un contrôle de contenu, uniquement lorsque le contenu provient du magasin de données Open XML.

ContentControlBeforeDelete Event

Se produit avant la suppression d’un contrôle de contenu d’un document.

ContentControlBeforeStoreUpdate Event

Se produit avant la mise à jour du magasin de données XML du document avec la valeur d’un contrôle de contenu.

ContentControlOnEnter Event

Se produit lorsqu’un utilisateur accède à un contrôle de contenu.

ContentControlOnExit Event

Se produit lorsqu’un utilisateur quitte un contrôle de contenu.

Synthèse des ressources

Titre

Description

Modèle d’événement de contrôle de contenu dans Word 2007 (éventuellement en anglais)

Extrait de l’ouvrage intitulé Visual Studio Tools for Office 2007: VSTO for Excel, Word, and Outlook d’Eric Carter et Eric Lippert. Contient une vue d’ensemble de la gestion d’événements pour les contrôles de contenu.

Working with Content Controls

Fournit une introduction aux contrôles de contenu.

Conclusion

Les systèmes de génération de documents constituent l’un des usages les plus enrichissants d’Open XML WordprocessingML. Les contrôles de contenu sont un excellent moyen de donner une structure à votre contenu et de simplifier la création de systèmes de génération de documents.