How to perform mail merge using JSON in ASP.NET Core Word document?
Syncfusion® DocIO is a .NET Core Word library used to create, read, and edit Word documents programmatically without Microsoft Word or interop dependencies. Using this library, you can perform mail merge using JSON in Word document using C#.
Steps to perform mail merge using JSON in Word document
-
Create a new C# .NET Core console application project.
-
Install the Syncfusion.DocIO.Net.Core NuGet package as a reference to your project from Nuget.org.
Starting with v16.2.0.x, if you reference Syncfusion® assemblies from trial setup or from the NuGet feed, include a license key in your projects. Refer to the link to learn about generating and registering a Syncfusion® license key in your application to use the components without trail message.
- Include the following namespace in the Program.cs file.
C#
using Syncfusion.DocIO;
using Syncfusion.DocIO.DLS;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json.Linq;
- Include the below code snippet in Program.cs to perform mail merge using JSON in Word document.
C#
using (FileStream fileStream = new FileStream(Path.GetFullPath(@"../../../Input.docx"), FileMode.Open, FileAccess.ReadWrite))
{
//Open the template document.
using (WordDocument document = new WordDocument(fileStream, FormatType.Docx))
{
//Get the Json data details as DataTable
List<object> jsonData = GetJsonData();
// Perform mail merge with the prepared data table.
document.MailMerge.Execute(jsonData);
//Create file stream.
using (FileStream outputStream = new FileStream(Path.GetFullPath(@"../../../Result.docx"), FileMode.Create, FileAccess.ReadWrite))
{
//Save the Word document to file stream.
document.Save(outputStream, FormatType.Docx);
}
}
}
- Add the following method to Prepare the data table from JSON data for processing.
C#
/// <summary>
/// Prepares the data table from JSON data for processing.
/// </summary>
private static List<object> GetJsonData()
{
//Reads the JSON object from JSON file.
JObject jsonObject = JObject.Parse(File.ReadAllText(Path.GetFullPath(@"../../../Json Data.json")));
//Converts JSON object to Dictionary.
IDictionary<string, object> data = GetData(jsonObject);
return data["Employee"] as List<object>;
}
/// <summary>
/// Gets data from JSON object.
/// </summary>
/// <param name="jsonObject">JSON object.</param>
/// <returns>Dictionary of data.</returns>
private static IDictionary<string, object> GetData(JObject jsonObject)
{
Dictionary<string, object> dictionary = new Dictionary<string, object>();
foreach (var item in jsonObject)
{
object keyValue = null;
if (item.Value is JArray)
keyValue = GetData((JArray)item.Value);
else if (item.Value is JToken)
keyValue = ((JToken)item.Value).ToObject<string>();
dictionary.Add(item.Key, keyValue);
}
return dictionary;
}
/// <summary>
/// Gets array of items from JSON array.
/// </summary>
/// <param name="jArray">JSON array.</param>
/// <returns>List of objects.</returns>
private static List<object> GetData(JArray jArray)
{
List<object> jArrayItems = new List<object>();
foreach (var item in jArray)
{
object keyValue = null;
if (item is JObject)
keyValue = GetData((JObject)item);
jArrayItems.Add(keyValue);
}
return jArrayItems;
}
A complete working sample to perform mail merge using JSON in Word document can be downloaded from GitHub.
By executing the program, you will get the Word document as follows.
Take a moment to peruse the documentation where you can find basic Word document processing options along with the features like mail merge, merge, split, and compare documents, find and replace text in the Word document, protect the Word documents, and most importantly, the PDF and Image conversions with code examples
Conclusion
I hope you enjoyed learning about how to perform mail merge using JSON in ASP.NET Core Word document.
You can refer to our ASP.NET Core DocIO feature tour page to know about its other groundbreaking feature representations and documentation, and how to quickly get started for configuration specifications. You can also explore our ASP.NET Core DocIO example to understand how to create and manipulate data.
For current customers, you can check out our components from the License and Downloads page. If you are new to Syncfusion®, you can try our 30-day free trial to check out our other controls.
If you have any queries or require clarifications, please let us know in the comments section below. You can also contact us through our support forums, Direct-Trac, or feedback portal. We are always happy to assist you!