C# 应用程序中使用 Aspose 进行 Word 邮件合并和 2 个表格

问题描述 投票:0回答:1

我有一个 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 行)中。

现在,该流程会生成标题行、标题行、地块行、地块行。

我需要生成的文档有一个标题行,一个地块行,一个标题行,一个地块行。

我该如何实现这个目标?

aspose aspose.words
1个回答
0
投票

在您的情况下,您应该从两行构建模板。像这样:

然后您可以使用以下代码填写此类模板:

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
合并字段的段落将生成的空段落将被删除,并且表格将在输出文档中串联。输出将如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.