DataSet being passed in has one table named AddressList and two records...
DataTable addressTable = new DataTable("AddressList");
addressTable.Columns.Add("AddressLine1");
addressTable.Columns.Add("AddressLine2");
addressTable.Columns.Add("City");
addressTable.Columns.Add("State");
addressTable.Columns.Add("Zip");
DataRow dr1 = addressTable.NewRow();
dr1["AddressLine1"] = "test1";
dr1["AddressLine2"] = "";
dr1["City"] = "test";
dr1["State"] = "test";
dr1["Zip"] = "test";
DataRow dr2 = addressTable.NewRow();
dr2["AddressLine1"] = "atest";
dr2["AddressLine2"] = "";
dr2["City"] = "btest";
dr2["State"] = "ctest";
dr2["Zip"] = "ftest";
addressTable.Rows.Add(dr1);
addressTable.Rows.Add(dr2);
labelDS.Tables.Add(addressTable);
string mailingLabelFileName = "C:\\mailingLabels.doc";
byte[] abEventReportFormBytes = this.GetSharePointFile(mailingLabelFileName);
// Do Mail Merge
MailMergerService mms = DocumentServiceFactory.GetDocumentService();
result = mms.MergeNonExcel(abEventReportFormBytes, labelDS, DocumentType.Word, true);
private byte[] MergeNonExcel(byte[] template, DataSet data, DocumentType outputType)
{
Aspose.Word.License wordLicense = new Aspose.Word.License();
wordLicense.SetLicense("Aspose.Custom.lic");
Aspose.Pdf.License pdfLicense = new Aspose.Pdf.License();
pdfLicense.SetLicense("Aspose.Custom.lic");
byte[] result = null;
using (MemoryStream memoryStream = new MemoryStream(template))
{
Document doc = new Document(memoryStream);
Debug.WriteLine("RowCount for Table[0]: " + data.Tables[0].Rows.Count);
if (data.Tables[0].Rows.Count == 0)
return template;
doc.MailMerge.Execute(data.Tables[0]);
for (int i = 1; i < data.Tables.Count; i++)
{
DataTable tbl = data.Tables;
doc.MailMerge.ExecuteWithRegions(tbl);
}
result = DocumentToBytes(doc, outputType);
}
return result;
}