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 ?
- Sources de données pour la fusion de courrier
- Préparation des modèles de fusion de courrier
- Commencer avec Aspose.Words pour .NET
- Effectuer la fusion de courrier avec des données d’exemple
- Fusion de courrier avec des données XML
- Formatage personnalisé des champs de fusion
- Fusion de courrier avec des régions
- Fusion de courrier imbriquée
- Conclusion
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 :
- Ouvrez votre document ou créez-en un nouveau dans MS Word.
- Placez le curseur à l’endroit où vous souhaitez insérer un champ de fusion.
- À partir du menu Insérer, sélectionnez l’option Champ.
- Dans la liste Noms de champ, sélectionnez MergeField.
- Spécifiez un nom pour le champ de fusion dans la boîte Nom du champ et cliquez sur OK.
- Enregistrez le document.
La capture d’écran suivante illustre un modèle d’exemple.
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é :
- Chargez le document modèle en utilisant la classe Document.
- Définissez les options de fusion de courrier requises, telles que Document.MailMerge.TrimWhitespaces.
- Exécutez la fusion de courrier en utilisant la méthode Document.MailMerge.Execute(), en passant la source de données en paramètre.
- 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
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.
Cette image représente la première page du document Word résultant obtenu après l’exécution de la fusion de courrier.
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».
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.
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.
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.