Introduction

L’automatisation de la création de documents personnalisés—tels que des rapports, des lettres et des factures—peut vous faire gagner du temps et des efforts. Avec C# Mail Merge alimenté par Aspose.Words pour .NET, vous pouvez y parvenir sans effort. Ce guide vous expliquera 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’Interop Office. À la fin, vous serez en mesure d’intégrer la fusion de courrier C# pour l’automatisation des rapports et de rationaliser votre flux de travail de reporting.


Contenu :


Qu’est-ce que la fusion de courrier ?

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

  • Générer des lettres et des factures personnalisées.
  • Créer des rapports en masse en utilisant des formats structurés tels que XML, JSON ou des 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 une variété de sources de données, y compris :

  • Objets : Peupler des modèles en utilisant des instances de classe.
  • XML : Charger des données structurées pour des champs dynamiques.
  • JSON : Intégrer facilement avec des API modernes.
  • CSV : Exploiter des données tabulaires pour la génération de documents en masse.
  • DataTable/DataSet : Utiliser ADO.NET pour l’intégration de bases 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 peuplés avec des données de votre source de données spécifiée lors de l’exécution. Le modèle peut être au format DOC ou DOCX et ne nécessite pas de style 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. Dans le menu Insertion, 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 case Nom du champ et cliquez sur OK.
  6. Enregistrez le document.

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

Modèle de fusion de courrier

API de fusion de courrier .NET - Installation

Vous pouvez installer Aspose.Words pour .NET par plusieurs méthodes :

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

Une fois votre modèle prêt, vous pouvez exécuter 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 comme 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 une 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 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. Voici un fichier XML d’exemple 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’exemple de code suivant récupère des données 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 peuplé avec des données 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 la 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 exemple de code montrant comment appliquer un formatage personnalisé lors de la fusion de courrier à travers le modèle d’exemple fourni :

Le suivant implémente la classe HandleMergeFieldAlternatingRows.

Fusion de courrier avec des régions en C#

Dans certains cas, vous devrez peupler et répéter une région spécifique au sein du document Word. Pour de tels scénarios, 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—Orders et OrderDetails—utilisant les champs de fusion «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails», et «TableEnd:OrderDetails».

Fusion de courrier avec des régions

Voici un exemple de code qui exécute la fusion de courrier basée sur 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

Souvent, les données de la source sont structurées dans des formats relationnels. Par exemple, “Orders” peut avoir une relation un-à-plusieurs avec “OrderDetails”, qui conserve des enregistrements d’articles au sein d’une commande. Dans de tels 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’exemple 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 fournit à 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 sans effort. 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 pour développeurs disponibles et le code d’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