Emulate a Word mail merge using WordTemplate, featuring new nested repeat block technology. A document will be created with each recipient's letter on a new page, complete with a nested table of orders. Take care of all of your mail merge production with one print job. |
Note that using nested repeat blocks is only supported by using docx files.
public void GenerateDocument() { WordTemplate wt = new WordTemplate(); wt.Open(@"..\..\WordTemplateFiles\NestedMailMergeTemplate.docx"); //Retrieve the Data from the source, a csv file with a helper method DataTable dt = GetMailMergeData(@"..\..\WordData\NestedMailMergeData.csv"); // set dt as the datasource for the repeatblock and "MailMerge" as the bookmark. // this will cause wordwriter to bind each letter on a different page of the output file. wt.SetRepeatBlock(dt, "MailMerge"); wt.Process(); //Save the Document in the desired location wt.Save(@"..\..\WordOutputFiles\NestedMailMerge_output.docx"); } //Helper method to parse the csv files with data private DataTable GetMailMergeData(string csvFileName) { DataTable dt = new DataTable(); using (GenericParserAdapter parser = new GenericParserAdapter(csvFileName)) { parser.ColumnDelimiter = ','; parser.FirstRowHasHeader = true; dt = parser.GetDataTable(); } return dt; } } |
Template: NestedMailMergeTemplate.docx Data: NestedMailMergeData.csv Output: NestedMailMerge_output.docx |