I have a .docx
mail merge document. The application builds a datasource with 13 elements (columns). I build the page with the following code:
System.Data.DataTable CondoDataTable = _repoForm.GetProtestCasesTempateCondo(record, guid);
if (CondoDataTable.Rows.Count > 0)
{
Aspose.Words.Document templateAttachment = new Aspose.Words.Document(PathToTemplateAttachment);
CondoDataTable.TableName = "Protest";
templateAttachment.FieldOptions.BarcodeGenerator = new CustomBarcodeGenerator();
templateAttachment.MailMerge.ExecuteWithRegions(CondoDataTable);
MemoryStream protestAttachmentMemory = new MemoryStream();
templateAttachment.Save(protestAttachmentMemory, Aspose.Words.SaveFormat.Pdf);
docs.Add(protestAttachmentMemory);
}
All this code works exactly as I expected and the resulting document contains all the datasource data in a table.
The mail merge document makes use of {MAILMERGE TableStart:Protest}
and {MAILMERGE TableEnd:Protest}
to facilitate generation of the table.
Now I need to pass 4 pieces of static information which will appear in the header and footer of all pages generated.
Any ideas?
Thank you for any assistance.
You can put merge field outside the region and execute simple mail merge using Document.Execute method to fill them with data. For example:
And fill such template by calling ExecuteWithRegions
and Execute
methods:
Document doc = new Document(@"C:\Temp\in.docx");
doc.MailMerge.ExecuteWithRegions(myTableData);
doc.MailMerge.Execute(new string[] { "MyFieldOutsideRegion", "AnotherFieldOutsideRegion" },
new string[] { "MyFieldOutsideRegion Data", "AnotherFieldOutsideRegion Data" });
doc.Save(@"C:\Temp\out.docx");
To repeat the information on each page of the generated document, just put the fields into the template's header and footer.