C#&ASP.NET MVC中,Aspose邮件合并如何添加页眉页脚静态信息?
实现静态信息填充到所有页面的页眉页脚
方案思路
由于是全局通用的静态信息,无需与表格行数据关联,可通过普通邮件合并字段配合MailMerge.Execute方法实现,整体分为模板修改和代码调整两部分。
步骤1:修改.docx模板
打开你的邮件合并模板,编辑页眉与页脚:
- 在页眉需要展示信息的位置插入邮件合并字段,例如:
{MERGEFIELD CompanyName}、{MERGEFIELD ContactEmail}(对应2条页眉静态信息) - 在页脚对应位置插入:
{MERGEFIELD OfficePhone}、{MERGEFIELD CopyrightInfo}(对应2条页脚静态信息)
字段名可自定义,只要和代码中的键名完全匹配即可,建议使用语义化名称便于维护。
步骤2:调整代码填充静态信息
在现有代码中,执行完表格区域的邮件合并后,添加代码填充静态字段。使用Dictionary<string, object>存储静态键值对,再调用MailMerge.Execute方法完成填充:
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); // 准备4条静态信息的键值对,键名需与模板中的MERGEFIELD名称完全一致 var staticHeaderFooterData = new Dictionary<string, object> { {"CompanyName", "XX置业有限公司"}, {"ContactEmail", "support@xxcompany.com"}, {"OfficePhone", "010-XXXXXXX"}, {"CopyrightInfo", "©2024 XX公司 保留所有权利"} }; // 填充页眉页脚的静态字段 templateAttachment.MailMerge.Execute(staticHeaderFooterData); MemoryStream protestAttachmentMemory = new MemoryStream(); templateAttachment.Save(protestAttachmentMemory, Aspose.Words.SaveFormat.Pdf); docs.Add(protestAttachmentMemory); }
额外说明
- 若模板原本无页眉/页脚,也可通过代码动态创建,但更推荐在模板中预先设置好排版格式,避免代码中处理复杂的样式逻辑。
- 注意
MERGEFIELD名称与代码中字典键名的大小写完全匹配,否则无法正常填充。
内容的提问来源于stack exchange,提问作者Jonathan Small
相关产品推荐
相关产品推荐

