Passer au contenu du pied de page
UTILISATION D'IRONWORD

Comment générer un document Word en utilisant un modèle Word en C#

In modern-day applications, it is crucial to generate Word documents on the fly for various purposes like billing, invoices, letters, etc. The Microsoft Word template document feature offers a powerful way to ensure consistency and efficiency. However, manually populating these templates can be time-consuming and prone to errors. That’s where IronWord from Iron Software comes in—a robust .NET library designed to automate the process of filling Word templates programmatically. In this article, we’ll walk through how to use IronWord to fill a Word document template and provide a practical example to illustrate the process.

How to Generate a Word Document Using a Word Template in C#

  1. Create a new project in Microsoft Visual Studio.
  2. Install IronWord through NuGet package manager.
  3. Create a Word Template document.
  4. Insert data into a Word document and save it as a new file.
  5. Add text effects to the generated Word document.

What is IronWord?

IronWord is a .NET library from Iron Software designed to facilitate the creation, manipulation, and management of Microsoft Word documents programmatically. It allows developers to automate the process of generating Word documents, making it easier to dynamically create reports, invoices, letters, and other types of documents within their applications.

Key Features of IronWord

1. C# Fill Word Template and Handling

IronWord enables the use of Word templates to define placeholders in a template document and replace them with actual data at runtime.

2. Text Manipulation

You can easily insert, replace, or delete text within a Word document.

3. Formatting

The library supports various formatting options, including font styles, sizes, colors, and paragraph alignment.

4. Tables and Images

IronWord allows you to insert and manipulate tables and images within your documents.

5. Compatibility

It works seamlessly with different versions of Microsoft Word, ensuring compatibility and ease of use.

Use Cases

  • Report Generation: Automatically generate detailed reports with dynamic data.
  • Invoice Creation: Create professional invoices by filling in customer and transaction details.
  • Contract Management: Automate the creation of contracts with personalized information.
  • Letters and Notices: Generate personalized letters and notices for clients or employees.

IronWord simplifies working with Word documents in .NET applications, making it a valuable tool for developers who want to automate document generation and management tasks.

Prerequisites

A quick reminder to make sure you have the following before we get started:

  • Visual Studio is installed on your machine.
  • The latest .NET Framework is installed.

Step 1: Create a new project in Microsoft Visual Studio.

Now, let us begin by creating a new Visual Studio project.

How to Generate a Word Document Using a Word Template in C#: Figure 1

Select the console application template on the screen below.

How to Generate a Word Document Using a Word Template in C#: Figure 2 - Select Console App

Provide the project name and location.

How to Generate a Word Document Using a Word Template in C#: Figure 3 - Provide name and location

Select the .NET Version, preferably the latest one with support, and click Create.

How to Generate a Word Document Using a Word Template in C#: Figure 4

Step 2: Install IronWord NuGet Package manager.

Install IronWord NuGet package from NuGet package manager as below in Visual Studio.

How to Generate a Word Document Using a Word Template in C#: Figure 5 - Search for IronWord from NuGet Package Manager

Alternatively, please install it using CLI directly using the command below.

dotnet add package IronWord --version 2024.9.1
dotnet add package IronWord --version 2024.9.1
SHELL

Step 3: Create a Word Template document.

Now, generate a Word template document with one or two pages to be used during the Word document generation process.

Dear {Name},

Thanks for purchasing {product}. We are happy to serve you always. Your application dated {Date} has been approved. The product comes with an expiry date of {expiryDate}. Renew the product on or before the expiry date.

Feel free to contact {phone} or {email} for further queries.

Address: {Address}

Thank you,

{Sender}

Now, save the document above as Template.docx.

Step 4: Inserting data into a Word document and saving as a new file.

using System;
using System.Collections.Generic;
using IronWord;

class Program
{
    static void Main()
    {
        // Set the license key for IronWord
        License.LicenseKey = "your key";

        // Define paths for the template and the output file
        string templatePath = "Template.docx";
        string outputPath = "FilledDocument.docx";

        // Create a new instance of the WordDocument class using the template path
        WordDocument doc = new WordDocument(templatePath);

        // Define a dictionary of placeholders and their replacements
        var replacements = new Dictionary<string, string>
        {
            { "{Name}", "John Doe" },
            { "{Date}", DateTime.Now.ToString("MMMM d, yyyy") },
            { "{Address}", "123 Iron Street, Iron Software" },
            { "{product}", "IronWord" },
            { "{Sender}", "IronSoftware" },
            { "{phone}", "+123 456789" },
            { "{email}", "sale@ironsoftware.com" },
            { "{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy") },
        };

        // Replace placeholders in the document with actual data
        foreach (var replacement in replacements)
        {
            doc.Texts.ForEach(x => x.Replace(replacement.Key, replacement.Value));
        }

        // Save the filled document
        doc.Save(outputPath);

        // Notify the user that the document has been saved successfully
        Console.WriteLine("Document filled and saved successfully.");
    }
}
using System;
using System.Collections.Generic;
using IronWord;

class Program
{
    static void Main()
    {
        // Set the license key for IronWord
        License.LicenseKey = "your key";

        // Define paths for the template and the output file
        string templatePath = "Template.docx";
        string outputPath = "FilledDocument.docx";

        // Create a new instance of the WordDocument class using the template path
        WordDocument doc = new WordDocument(templatePath);

        // Define a dictionary of placeholders and their replacements
        var replacements = new Dictionary<string, string>
        {
            { "{Name}", "John Doe" },
            { "{Date}", DateTime.Now.ToString("MMMM d, yyyy") },
            { "{Address}", "123 Iron Street, Iron Software" },
            { "{product}", "IronWord" },
            { "{Sender}", "IronSoftware" },
            { "{phone}", "+123 456789" },
            { "{email}", "sale@ironsoftware.com" },
            { "{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy") },
        };

        // Replace placeholders in the document with actual data
        foreach (var replacement in replacements)
        {
            doc.Texts.ForEach(x => x.Replace(replacement.Key, replacement.Value));
        }

        // Save the filled document
        doc.Save(outputPath);

        // Notify the user that the document has been saved successfully
        Console.WriteLine("Document filled and saved successfully.");
    }
}
Imports System
Imports System.Collections.Generic
Imports IronWord

Friend Class Program
	Shared Sub Main()
		' Set the license key for IronWord
		License.LicenseKey = "your key"

		' Define paths for the template and the output file
		Dim templatePath As String = "Template.docx"
		Dim outputPath As String = "FilledDocument.docx"

		' Create a new instance of the WordDocument class using the template path
		Dim doc As New WordDocument(templatePath)

		' Define a dictionary of placeholders and their replacements
		Dim replacements = New Dictionary(Of String, String) From {
			{"{Name}", "John Doe"},
			{"{Date}", DateTime.Now.ToString("MMMM d, yyyy")},
			{"{Address}", "123 Iron Street, Iron Software"},
			{"{product}", "IronWord"},
			{"{Sender}", "IronSoftware"},
			{"{phone}", "+123 456789"},
			{"{email}", "sale@ironsoftware.com"},
			{"{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy")}
		}

		' Replace placeholders in the document with actual data
		For Each replacement In replacements
			doc.Texts.ForEach(Function(x) x.Replace(replacement.Key, replacement.Value))
		Next replacement

		' Save the filled document
		doc.Save(outputPath)

		' Notify the user that the document has been saved successfully
		Console.WriteLine("Document filled and saved successfully.")
	End Sub
End Class
$vbLabelText   $csharpLabel

Explanation

The provided code demonstrates using the IronWord library to fill a Word document template with specific data. Here’s a concise explanation:

  1. License Setup: The code begins by setting the license key for IronWord to activate its functionality.
  2. File Paths: It specifies the paths for the Word template (Template.docx) and the output file (FilledDocument.docx).
  3. Create Document Instance: An instance of WordDocument is created using the template path reference.
  4. Define Replacements: A dictionary is created where keys represent placeholders in the template, and values represent the data to insert.
  5. Replace Placeholders: It iterates through the dictionary, replacing each placeholder in the document with the corresponding data.
  6. Save Document: Finally, the updated document is saved to the specified output path.
  7. Completion Message: A message is printed to confirm that the document has been successfully filled and saved.

Output

How to Generate a Word Document Using a Word Template in C#: Figure 7 - Word Document Output

Step 5: Add text effects to generated Word document.

IronWord also allows adding various text effects, as shown in the table below.

In the following example, we add text effects to the word "IronSoftware".

using System;
using System.Collections.Generic;
using IronWord;
using IronWord.Models;

class Program
{
    static void Main()
    {
        // Set the license key for IronWord
        License.LicenseKey = "your key";

        // Define paths for the template and the output file
        string templatePath = "Template.docx";
        string outputPath = "glowEffect.docx";

        // Create a new instance of the WordDocument class
        WordDocument doc = new WordDocument(templatePath);

        // Define a dictionary of placeholders and their replacements
        var replacements = new Dictionary<string, string>
        {
            { "{Name}", "John Doe" },
            { "{Date}", DateTime.Now.ToString("MMMM d, yyyy") },
            { "{Address}", "123 Iron Street, Iron Software" },
            { "{product}", "IronWord" },
            { "{Sender}", "Sale," },
            { "{phone}", "+123 456789" },
            { "{email}", "sale@ironsoftware.com" },
            { "{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy") },
        };

        // Replace placeholders in the document with actual data
        foreach (var replacement in replacements)
        {
            doc.Texts.ForEach(x => x.Replace(replacement.Key, replacement.Value));
        }

        // Create and configure text style methods with a glow effect
        TextStyle textStyle = new TextStyle
        {
            TextEffect = new TextEffect()
            {
                GlowEffect = new Glow()
                {
                    GlowColor = IronWord.Models.Color.Aqua,
                    GlowRadius = 10,
                },
            }
        };

        // Add styled text to the document
        doc.AddText(" IronSoftware").Style = textStyle;

        // Save the document with the glow effect
        doc.SaveAs(outputPath);

        // Notify the user that the document has been saved successfully
        Console.WriteLine("Styled document saved successfully.");
    }
}
using System;
using System.Collections.Generic;
using IronWord;
using IronWord.Models;

class Program
{
    static void Main()
    {
        // Set the license key for IronWord
        License.LicenseKey = "your key";

        // Define paths for the template and the output file
        string templatePath = "Template.docx";
        string outputPath = "glowEffect.docx";

        // Create a new instance of the WordDocument class
        WordDocument doc = new WordDocument(templatePath);

        // Define a dictionary of placeholders and their replacements
        var replacements = new Dictionary<string, string>
        {
            { "{Name}", "John Doe" },
            { "{Date}", DateTime.Now.ToString("MMMM d, yyyy") },
            { "{Address}", "123 Iron Street, Iron Software" },
            { "{product}", "IronWord" },
            { "{Sender}", "Sale," },
            { "{phone}", "+123 456789" },
            { "{email}", "sale@ironsoftware.com" },
            { "{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy") },
        };

        // Replace placeholders in the document with actual data
        foreach (var replacement in replacements)
        {
            doc.Texts.ForEach(x => x.Replace(replacement.Key, replacement.Value));
        }

        // Create and configure text style methods with a glow effect
        TextStyle textStyle = new TextStyle
        {
            TextEffect = new TextEffect()
            {
                GlowEffect = new Glow()
                {
                    GlowColor = IronWord.Models.Color.Aqua,
                    GlowRadius = 10,
                },
            }
        };

        // Add styled text to the document
        doc.AddText(" IronSoftware").Style = textStyle;

        // Save the document with the glow effect
        doc.SaveAs(outputPath);

        // Notify the user that the document has been saved successfully
        Console.WriteLine("Styled document saved successfully.");
    }
}
Imports System
Imports System.Collections.Generic
Imports IronWord
Imports IronWord.Models

Friend Class Program
	Shared Sub Main()
		' Set the license key for IronWord
		License.LicenseKey = "your key"

		' Define paths for the template and the output file
		Dim templatePath As String = "Template.docx"
		Dim outputPath As String = "glowEffect.docx"

		' Create a new instance of the WordDocument class
		Dim doc As New WordDocument(templatePath)

		' Define a dictionary of placeholders and their replacements
		Dim replacements = New Dictionary(Of String, String) From {
			{"{Name}", "John Doe"},
			{"{Date}", DateTime.Now.ToString("MMMM d, yyyy")},
			{"{Address}", "123 Iron Street, Iron Software"},
			{"{product}", "IronWord"},
			{"{Sender}", "Sale,"},
			{"{phone}", "+123 456789"},
			{"{email}", "sale@ironsoftware.com"},
			{"{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy")}
		}

		' Replace placeholders in the document with actual data
		For Each replacement In replacements
			doc.Texts.ForEach(Function(x) x.Replace(replacement.Key, replacement.Value))
		Next replacement

		' Create and configure text style methods with a glow effect
		Dim textStyle As New TextStyle With {
			.TextEffect = New TextEffect() With {
				.GlowEffect = New Glow() With {
					.GlowColor = IronWord.Models.Color.Aqua,
					.GlowRadius = 10
				}
			}
		}

		' Add styled text to the document
		doc.AddText(" IronSoftware").Style = textStyle

		' Save the document with the glow effect
		doc.SaveAs(outputPath)

		' Notify the user that the document has been saved successfully
		Console.WriteLine("Styled document saved successfully.")
	End Sub
End Class
$vbLabelText   $csharpLabel

Explanation

The revised code illustrates using the IronWord library to fill out a Word document template, style text, and save the modified document. Here's a concise explanation:

  1. License Setup: Sets the IronWord license key to enable functionality.
  2. File Paths: Specifies the paths for the template (Template.docx) and the output file (glowEffect.docx).
  3. Create Document Instance: Initializes a WordDocument instance using the provided template path.
  4. Define Replacements: Creates a dictionary of placeholders and their corresponding replacement values.
  5. Replace Placeholders: Iterates through the dictionary, replacing placeholders in the document with actual data.
  6. Configure Text Style: Defines a text style with a glow effect, specifying color and radius.
  7. Add Styled Text: Adds text with the configured style to the document.
  8. Save Document: Saves the updated document with a new name (glowEffect.docx), reflecting the applied text style.
  9. Console Output: A message is printed to confirm that the styled document has been saved.

Output

How to Generate a Word Document Using a Word Template in C#: Figure 8 - Example Word Output

IronWord Licensing

IronWord. Once the data is entered, the license is delivered to the email ID provided. This license needs to be placed at the beginning of the code, before using the IronWord library, as below.

License.LicenseKey = "your Key Here";
License.LicenseKey = "your Key Here";
License.LicenseKey = "your Key Here"
$vbLabelText   $csharpLabel

Conclusion

IronWord offers several advantages for generating Word documents using templates. It simplifies document creation automation by allowing developers to programmatically fill out templates with specific data, reducing the need for manual input. This increases efficiency and accuracy, as the risk of human error is minimized. Additionally, IronWord helps maintain consistency across documents, ensuring that each generated file adheres to the same format and structure. Automating repetitive tasks saves time and resources, making it ideal for quickly producing large volumes of documents. IronWord enhances productivity and streamlines workflows in scenarios requiring frequent or complex document generation.

By following the steps outlined in this article and leveraging the provided example with IronWord, you can efficiently manage your document generation needs and streamline your workflow.

Questions Fréquemment Posées

Comment puis-je remplir un modèle de document Word en utilisant C# ?

Vous pouvez remplir un modèle de document Word en utilisant C# en exploitant IronWord. Tout d'abord, configurez votre projet dans Visual Studio et installez le package IronWord via NuGet. Créez un modèle Word et utilisez IronWord pour insérer des données, puis enregistrez le modèle rempli comme un nouveau document.

Quels sont les avantages d'utiliser une bibliothèque .NET pour l'automatisation des modèles Word ?

Utiliser une bibliothèque .NET comme IronWord pour l'automatisation des modèles Word réduit les saisies manuelles, minimise les erreurs et assure la cohérence dans la création de documents. Elle permet de gérer efficacement des tâches telles que la facturation, l'émission de factures et la rédaction de lettres.

Puis-je ajouter des effets de texte lors du remplissage d'un modèle Word de façon programmée ?

Oui, avec IronWord, vous pouvez ajouter des effets de texte tels que des lueurs ou des ombres au texte de vos documents Word lors du remplissage de modèles de manière programmée.

Quelles sont les étapes à suivre pour configurer IronWord dans un projet Visual Studio ?

Pour configurer IronWord dans un projet Visual Studio, commencez par installer le package NuGet IronWord, créez votre modèle Word, puis utilisez les méthodes d'IronWord pour remplir et enregistrer le document de manière programmée.

Comment IronWord assure-t-il la cohérence dans la génération de documents ?

IronWord assure la cohérence en permettant aux développeurs d'utiliser des modèles Word qui maintiennent le même format et la même mise en page sur plusieurs documents, réduisant le risque d'erreurs humaines.

Quelles sont quelques applications pratiques de l'automatisation de la génération de documents Word ?

L'automatisation de la génération de documents Word avec IronWord peut être appliquée dans divers scénarios, y compris la génération de rapports, la création de factures, la gestion de contrats et la rédaction de lettres personnalisées.

Est-il possible de gérer différentes versions de Microsoft Word en utilisant IronWord ?

Oui, IronWord est compatible avec plusieurs versions de Microsoft Word, permettant une gestion transparente des documents dans différents environnements.

Qu'est-ce qui est nécessaire pour commencer à utiliser IronWord pour la gestion de documents Word ?

Pour commencer à utiliser IronWord, assurez-vous d'avoir Visual Studio installé, ainsi que le dernier .NET Framework. Ensuite, ajoutez IronWord à votre projet via le gestionnaire de packages NuGet.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite