Introduction

Gagnez du temps et des efforts en automatisant la création de documents personnalisés tels que des rapports, lettres et factures avec la fusion de courrier C# propulsée par Aspose.Words pour .NET. Ce guide explique comment utiliser le plugin de fusion de courrier Aspose.Words pour effectuer une génération de documents efficace et évolutive au sein de vos applications .NET, sans avoir besoin de MS Word ou d’Office Interop. Vous apprendrez à intégrer la fusion de courrier C# pour l’automatisation des rapports, vous permettant d’optimiser votre flux de travail de reporting.


Contenu :


Qu’est-ce que la fusion de courrier ?

La fusion de courrier est une méthodologie pour générer dynamiquement des documents en remplissant des modèles avec des données provenant de diverses sources. Avec Aspose.Words, vous pouvez automatiser sans effort des tâches telles que :

  • Générer des lettres et des factures avec des détails personnalisés.
  • Créer des rapports en masse en utilisant des données de formats structurés comme XML, JSON ou bases de données, permettant la génération dynamique de rapports avec C# et Aspose.Words.

Sources de données pour la fusion de courrier

Aspose.Words prend en charge diverses sources de données :

  • Objets : Remplissez des modèles en utilisant des instances de classe.
  • XML : Chargez des données structurées pour des champs dynamiques.
  • JSON : Intégrez facilement avec des API modernes.
  • CSV : Exploitez des données tabulaires pour la génération de documents en masse.
  • DataTable/DataSet : Utilisez ADO.NET pour l’intégration de base de données.

Préparation du modèle pour la fusion de courrier

Le modèle de fusion de courrier est le document contenant des champs de fusion qui seront remplis avec des données provenant de votre source de données spécifiée pendant l’exécution. Le modèle peut être au format DOC ou DOCX ; il ne nécessite pas nécessairement de style de modèle spécifique. Suivez ces étapes pour créer un modèle de fusion de courrier :

  1. Ouvrez votre document ou créez-en un nouveau dans MS Word.
  2. Placez le curseur à l’endroit où vous souhaitez insérer un champ de fusion.
  3. À partir du menu Insérer, sélectionnez l’option Champ.
  4. Dans la liste Noms de champ, sélectionnez MergeField.
  5. Spécifiez un nom pour le champ de fusion dans la boîte Nom du champ et cliquez sur OK.
  6. Enregistrez le document.

La capture d’écran suivante illustre un modèle d’exemple.

Modèle de fusion de courrier

API de fusion de courrier .NET - Installation

Vous pouvez installer Aspose.Words pour .NET par divers moyens :

Effectuer la fusion de courrier dans un document Word en utilisant C#

Une fois votre modèle prêt, exécutez la fusion de courrier pour générer des documents. Voici les étapes pour effectuer la fusion de courrier sur votre modèle préparé :

  1. Chargez le document modèle en utilisant la classe Document.
  2. Définissez les options de fusion de courrier requises, telles que Document.MailMerge.TrimWhitespaces.
  3. Exécutez la fusion de courrier en utilisant la méthode Document.MailMerge.Execute(), en passant la source de données en paramètre.
  4. Enregistrez le document généré en utilisant la méthode Document.Save(String).

Voici un exemple de code démontrant comment automatiser la génération de rapports en C# en utilisant un tableau de valeurs :


Document Word après la fusion de courrier

Exécuter la fusion de courrier en C#

Effectuer la fusion de courrier en utilisant une source de données XML en C#

Les fichiers XML sont couramment utilisés pour stocker et transférer des données. Aspose.Words pour .NET prend également en charge XML comme source de données pour les opérations de fusion de courrier. Il suffit de lire le XML dans un objet DataSet et d’exécuter la fusion de courrier. Ci-dessous se trouve un échantillon de fichier XML pour notre cas d’utilisation.

<customers>
    <customer Name="John Ben Jan" ID="1" Domain="History" City="Boston"/>
    <customer Name="Lisa Lane" ID="2" Domain="Chemistry" City="LA"/>
    <customer Name="Dagomir Zits" ID="3" Domain="Heraldry" City="Milwaukee"/>
    <customer Name="Sara Careira Santy" ID="4" Domain="IT" City="Miami"/>
</customers>

L’extrait de code suivant récupère des données à partir d’une source de données XML et exécute la fusion de courrier en utilisant C#.

Voici le modèle de fusion de courrier qui sera rempli avec des données provenant du fichier XML.

Modèle de fusion de courrier pour XML

Cette image représente la première page du document Word résultant obtenu après l’exécution de la fusion de courrier.

Exécuter la fusion de courrier avec XML en C#

Formatage personnalisé des champs de fusion

Aspose.Words pour .NET offre un contrôle amélioré sur le processus de fusion de courrier. La propriété MailMerge.FieldMergingCallback vous permet de configurer le comportement de fusion de courrier à chaque fois qu’un champ de fusion est rencontré. L’implémentation des méthodes IFieldMergingCallback.FieldMerging et IFieldMergingCallback.ImageFieldMerging permet de personnaliser l’opération de fusion de courrier.

Voici un extrait de code démontrant comment appliquer un formatage personnalisé pendant la fusion de courrier à travers le modèle d’exemple fourni :

Ce qui suit implémente la classe HandleMergeFieldAlternatingRows.

Fusion de courrier avec des régions en C#

Dans certaines situations, vous devrez peut-être peupler et répéter une région spécifique à l’intérieur du document Word. Pour de tels cas, utilisez la fusion de courrier avec des régions. Pour créer une région, spécifiez à la fois le début et la fin de la région ; la fusion de courrier répétera ensuite cette région pour chaque enregistrement dans la source de données. L’exemple de modèle ci-dessous contient deux régions—Commandes et DétailsCommande—utilisant les champs de fusion «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails», et «TableEnd:OrderDetails».

Fusion de courrier avec des régions

Voici un extrait de code qui exécute la fusion de courrier en fonction des régions pour le modèle mentionné précédemment.

Les méthodes suivantes illustrent comment lire des données à partir d’une base de données.

Régions de fusion de courrier imbriquées

Fréquemment, les données de la source sont structurées en formats relationnels. Par exemple, “Commandes” peut avoir une relation un-à-plusieurs avec “DétailsCommande”, qui conserve des enregistrements d’articles au sein d’une commande. Dans ces scénarios, utilisez la fusion de courrier imbriquée. Voici un modèle de facture qui convient bien à ce scénario.

Modèle de fusion de courrier avec des régions

Voici une source de données XML pour notre exemple de fusion de courrier imbriquée.

<?xml version="1.0" encoding="utf-8"?>
<Orders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="OrdersSchema.xsd">
    <Order>
        <Number>23</Number>
        <Address>Nelson Street</Address>
        <Suburb>Howick</Suburb>
        <City>Auckland</City>
        <Phonenumber>543 1234</Phonenumber>
        <Date>03/01/2010</Date>
        <Total>14.00</Total>
        <Item>
            <Name>Pizza au poulet BBQ</Name>
            <Price>6.00</Price>
            <Quantity>1</Quantity>
            <ItemTotal>6.00</ItemTotal>
        </Item>
        <Item>
            <Name>Coca-Cola 1,5 Litre</Name>
            <Price>4.00</Price>
            <Quantity>2</Quantity>
            <ItemTotal>8.00</ItemTotal>
        </Item>
    </Order>
    <Order>
        <Number>10</Number>
        <Address>Parkville Avenue</Address>
        <Suburb>Pakuranga</Suburb>
        <City>Auckland</City>
        <Phonenumber>548 7342</Phonenumber>
        <Date>05/03/2010</Date>
        <Total>6.00</Total>
        <Item>
            <Name>Pizza hawaïenne</Name>
            <Price>4.00</Price>
            <Quantity>1</Quantity>
            <ItemTotal>4.00</ItemTotal>
        </Item>
        <Item>
            <Name>Frites</Name>
            <Price>1.00</Price>
            <Quantity>2</Quantity>
            <ItemTotal>2.00</ItemTotal>
        </Item>
    </Order>
</Orders>

Le fichier OrderSchema.xsd correspondant pour ce XML est :

<?xml version="1.0" encoding ="utf-8"?>
<xs:schema id="OrdersSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Orders">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Order">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Number"/>
                            <xs:element name="Address"/>
                            <xs:element name="Suburb"/>
                            <xs:element name="City"/>
                            <xs:element name="Phonenumber"/>
                            <xs:element name="Date"/>
                            <xs:element name="Total"/>
                            <xs:element name="Item">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Name"/>
                                        <xs:element name="Price"/>
                                        <xs:element name="Quantity"/>
                                        <xs:element name="ItemTotal"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

L’extrait de code suivant exécute la fusion de courrier imbriquée en utilisant C#.

Document Word après la fusion de courrier

Voici la première page du document Word résultant obtenu après l’exécution de la fusion de courrier imbriquée.

Document Word après la fusion de courrier

Conclusion

Aspose.Words pour .NET est une API de fusion de courrier complète qui offre à la fois des fonctionnalités standard et étendues adaptées aux applications .NET. Avec juste quelques lignes de code, vous pouvez développer des rapports simples ou complexes à partir de diverses sources de données de manière transparente. Pour des conseils sur les meilleures pratiques pour la génération de rapports automatisés .NET, consultez la documentation. Pour commencer avec Aspose.Words pour .NET, explorez les guides des développeurs et le code exemple sur GitHub. Le plugin Aspose offre également des fonctionnalités avancées pour la génération de rapports.

Essayez Aspose.Words pour .NET gratuitement

Vous pouvez obtenir une licence temporaire gratuite pour essayer Aspose.Words pour .NET sans limitations. Obtenez votre licence temporaire maintenant.

Voir aussi