Test in production without watermarks.
Works wherever you need it to.
Get 30 days of fully functional product.
Have it up and running in minutes.
Full access to our support engineering team during your product trial
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.
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.
IronWord enables the use of Word templates to define placeholders in a template document and replace them with actual data at runtime.
You can easily insert, replace, or delete text within a Word document.
The library supports various formatting options, including font styles, sizes, colors, and paragraph alignment.
IronWord allows you to insert and manipulate tables and images within your documents.
It works seamlessly with different versions of Microsoft Word, ensuring compatibility and ease of use.
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.
A quick reminder to make sure you have the following before we get started:
Now, let us begin by creating a new Visual Studio project.
Select the console application template on the screen below.
Provide the project name and location.
Select the .NET Version, preferably the latest one with support, and click Create.
Install IronWord NuGet package from NuGet package manager as below in Visual Studio.
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
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
.
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
The provided code demonstrates using the IronWord library to fill a Word document template with specific data. Here’s a concise explanation:
Template.docx
) and the output file (FilledDocument.docx
).WordDocument
is created using the template path reference.Output
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
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:
Template.docx
) and the output file (glowEffect.docx
).WordDocument
instance using the provided template path.glowEffect.docx
), reflecting the applied text style.Output
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"
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.
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.
You can install IronWord in your project through the NuGet package manager in Visual Studio or by using the CLI command: 'dotnet add package IronWord --version 2024.9.1'.
Key features of IronWord include C# Fill Word Template and Handling, Text Manipulation, Formatting, Tables and Images, and Compatibility with different versions of Microsoft Word.
To generate a Word document using a Word template in C#, you need to create a new project in Visual Studio, install IronWord via NuGet, create a Word template, insert data into it, and then save it as a new file.
Yes, IronWord allows adding various text effects such as glow effects to the text within Word documents.
The prerequisites for using IronWord include having Visual Studio and the latest .NET Framework installed on your machine.
With IronWord, you can replace placeholders in a Word template by creating a dictionary of placeholders and their corresponding replacement values, and then iterating through the dictionary to replace each placeholder in the document with the actual data.
Some use cases for IronWord include report generation, invoice creation, contract management, and generating personalized letters and notices.
IronWord enhances productivity by automating the generation and management of Word documents, reducing the need for manual input, minimizing human errors, and maintaining consistency across documents.
To set up the IronWord license key, place the license key code at the beginning of your program: 'License.LicenseKey = "your key";'.