我有一个 C# 应用程序,在其中使用 ASPOSE 以 Word 文档作为模板执行邮件合并。 Word文档中有一个2行的表格。
第一行的单元格 1 中有 {MERGEFIELD TableStart:Heading},单元格 5 中有 {MERGEFIELD TableEnd:Heading}。
第二行的单元格 1 中有 {MERGEFILED TableStart:Parcels},单元格 5 中有 {MERGEFIELD TableEnd:Parcels}。
应用程序构建了 3 个 DataTable 对象。这些对象称为 dt、tableHeader 和 tableData。
填充对象后,我执行以下代码:
DataSet dataSet = new DataSet();
dataSet.Tables.Add(tableHeader);
dataSet.Tables.Add(tableData);
dataSet.Relations.Add(tableHeader.Columns["h_SBL"], tableData.Columns["t_SBL"]);
template.MailMerge.Execute(dt);
template.MailMerge.ExecuteWithRegions(dataSet);
template.Save(outStream, Aspose.Words.SaveFormat.Docx);
这就是生成的文档的样子:
在图像中,Town 和 S.D. 所在的行。出现的行位于 Word 模板文档的标题表(第 1 行)中,项目编号:出现的行位于 Word 模板文档的包裹表(第 2 行)中。
现在,该流程会生成标题行、标题行、地块行、地块行。
我需要生成的文档有一个标题行,一个地块行,一个标题行,一个地块行。
我该如何实现这个目标?
然后您可以使用以下代码填写此类模板:
DataTable data = new DataTable("tblEmployerDetails");
data.Columns.Add("EmployerName");
data.Columns.Add("EmployerAddress");
data.Columns.Add("EmployerIndustry");
data.Rows.Add("John Dou", "Unknown city, Unknown street", "Unknown");
data.Rows.Add("James Bond", "85 Albert Embankment in Vauxhall, London", "Spy");
Document doc = new Document(@"C:\Temp\in.docx");
// Instruct Aspose.Words to remove empty paragraphs after executing mail merge.
doc.MailMerge.CleanupOptions = MailMergeCleanupOptions.RemoveEmptyParagraphs;
doc.MailMerge.ExecuteWithRegions(data);
doc.Save(@"C:\Temp\out.docx");
由于指定了
MailMergeCleanupOptions.RemoveEmptyParagraphs
清理选项,具有 TableStart
和 TableEnd
合并字段的段落将生成的空段落将被删除,并且表格将在输出文档中串联。输出将如下所示: