/// <summary> /// Creates a new word document from the specified template and then performas a mail merge. /// </summary> /// <param name="templateFilePath">The mail merge template document to use</param> /// <param name="outputFilePath">The name of the new file.</param> /// <param name="data">The data to use for the mail merge.</param> /// <param name="mappings">The mappings to use to match Word MAILMERGE fields with Data Columns in the specified data.</param> /// <param name="mergeType">Specifies whether to merge to a single document or multiple documents</param> public static void MailMerge(string templateFilePath, string outputFilePath, DataTable data, MailMergeType mergeType, IEnumerable <MailMergeMapping> mappings) { if (mergeType == MailMergeType.MultiDocument) { foreach (DataRow row in data.Rows) { MailMerge(templateFilePath, GetUniqueFileName(outputFilePath), row, mappings); } } else { MailMerge(templateFilePath, outputFilePath, data, mappings); } }
/// <summary> /// Creates a new word document from the specified template and then performas a mail merge. /// </summary> /// <param name="templateFilePath">The mail merge template document to use</param> /// <param name="outputFilePath">The name of the new file.</param> /// <param name="data">The data to use for the mail merge.</param> /// <param name="mergeType">Specifies whether to merge to a single document or multiple documents</param> public static void MailMerge(string templateFilePath, string outputFilePath, DataTable data, MailMergeType mergeType) { var mappings = new List <MailMergeMapping>(); data.Columns.Cast <DataColumn>().ForEach(column => { mappings.Add(new MailMergeMapping { DataColumnFieldName = column.ColumnName, MailMergeFieldName = column.ColumnName }); }); MailMerge(templateFilePath, outputFilePath, data, mergeType, mappings); }