翻译|使用教程|编辑:吉炜炜|2025-02-14 14:12:04.767|阅读 3 次
概述:在本文中,您将学习如何使用 Spire.Doc for .NET 在 Word 文档中执行邮件合并。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
在本文中,您将学习如何使用 Spire.Doc for .NET 在 Word 文档中执行邮件合并。
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 安装。
PM> Install-Package Spire.Doc
想要生成带有合并域的模板 Word 文档,建议使用 Microsoft Word 等 Word 编辑器。Word 编辑器的视觉界面使您能够自由地设计模板的独特布局、格式和其他元素。
下图展示了如何使用 MS Word 向 Word 文档中添加邮件合并域。如果您想将图像合并到合并域中,请记得使用“Image:FieldName”格式。
如果您想要使用 C# 创建一个模板文档,请参照以下步骤:
using Spire.Doc; using Spire.Doc.Documents; namespace CreateTemplate { class Program { static void Main(string[] args) { // 创建一个 Document 对象 Document document = new Document(); // 添加一个节 Section section = document.AddSection(); // 添加一个段落 Paragraph paragraph = section.AddParagraph(); // 在段落中添加文本和邮件合并域 paragraph.AppendText("姓名:"); paragraph.AppendField("Name", FieldType.FieldMergeField); paragraph.AppendBreak(BreakType.LineBreak); paragraph.AppendText("邮件地址:"); paragraph.AppendField("Email", FieldType.FieldMergeField); paragraph.AppendBreak(BreakType.LineBreak); paragraph.AppendText("个人头像:"); paragraph.AppendField("Image:Avatar", FieldType.FieldMergeField); // 保存结果文档 document.SaveToFile("/模板.docx", FileFormat.Docx2019); // 释放资源 document.Dispose(); } } }
Spire.Doc 提供了 MailMerge.Execute() 方法,用于在 Word 文档中执行指定的邮件合并操作。该方法有 6 个重载版本,允许用户从不同的数据源(如 DataTable、DataView 和字符串数组)执行邮件合并。
使用数组提供的数据执行邮件合并的步骤如下:
using Spire.Doc; using Spire.Doc.Reporting; using System.Drawing; namespace MailMergeInDocument { class Program { static void Main(string[] args) { // 创建一个 Document 对象 Document document = new Document(); // 加载 Word 模板 document.LoadFromFile("/模板.docx"); // 指定合并域的名称 string[] fieldNames = { "Name", "Email", "Avatar" }; // 指定用来填充合并域的值 string[] fieldValues = { "谢雨", "xieyu @e-iceblue.com", "C:/Users/Administrator/Desktop/avatar.png" }; // 注册合并图片合并域时触发的事件 document.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MailMerge_MergeImageField); // 将数据邮件合并到文档中 document.MailMerge.Execute(fieldNames, fieldValues); // 保存结果文档 document.SaveToFile("/邮件合并.docx", FileFormat.Docx2019); // 释放资源 document.Dispose(); } // 使用图片填充图像合并域 private static void MailMerge_MergeImageField(object sender, MergeImageFieldEventArgs field) { string filePath = field.FieldValue as string; if (!string.IsNullOrEmpty(filePath)) { field.Image = Image.FromFile(filePath); } } } }
这里的区域指的是文档中的特定区域,您可以在区域插入数据源中的数据。邮件合并会针对数据源中的每条记录重复该区域。Spire.Doc 提供了 MailMerge.ExecuteWithRegion() 方法来执行区域内的邮件合并。
使用 DataTable 提供的数据执行带区域的邮件合并的步骤如下:
using Spire.Doc; using System.Data; namespace MailMergeWithGroup { class Program { static void Main(string[] args) { // 创建一个 Document 对象 Document document = new Document(); // 加载模板 Word 文件 document.LoadFromFile("/邮件模板.docx"); // 创建一个 数据表,并指定表名 DataTable table = new DataTable("OrderDetails"); // 添加示例数据 table.Columns.Add("ProductName"); table.Columns.Add("Quantity"); table.Columns.Add("UnitPrice"); table.Columns.Add("TotalPrice"); table.Rows.Add("无线鼠标", "2", "39.99", "79.98"); table.Rows.Add("机械键盘", "1", "89.99", "89.99"); table.Rows.Add("电竞耳机", "3", "59.99", "179.97"); table.Rows.Add("显示器支架", "1", "49.99", "49.99"); // 在区域内执行邮件合并 document.MailMerge.ExecuteWidthRegion(table); // 保存修改后的文档 document.SaveToFile("/区域邮件合并.docx", FileFormat.Docx2019); // 释放资源 document.Dispose(); } } }
在执行嵌套分组的邮件合并时,系统会将嵌套区域内的合并域替换为按照层次结构组织的数据。嵌套区域可以创建更复杂的布局,其中一个区域的内容将依赖于另一个区域中的数据。
使用 XML 文件中的数据执行嵌套区域邮件合并的步骤如下:
using Spire.Doc;
using System.Collections;
using System.Data;
namespace MailMergeWithNestedRegions
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Document 对象
Document document = new Document();
// 加载 Word 模板文档
document.LoadFromFile("/模板.docx");
// 从 XML 文件读取数据到 DataSet 对象
DataSet dataSet = new DataSet();
dataSet.ReadXml("/Orders.xml");
// 创建一个 List 对象,用以存储合并域信息
List list = new List();
// 创建两个 DictionaryEntry 对象,并将它们添加到列表中(每个对象指定合并域名称和相关的表达式)
DictionaryEntry dictionaryEntry = new DictionaryEntry("Customer", string.Empty);
list.Add(dictionaryEntry);
dictionaryEntry = new DictionaryEntry("Order", "Customer_Id = %Customer.Customer_Id%");
list.Add(dictionaryEntry);
// 执行嵌套区域的邮件合并
document.MailMerge.ExecuteWidthNestedRegion(dataSet, list);
// 保存结果文件
document.SaveToFile("嵌套区域的邮件合并.docx", FileFormat.Docx2019);
// 释放资源
document.Dispose();
}
}
}
慧都是E-iceblue的官方授权代理商,提供Spire系列产品免费试用,咨询,正版销售等于一体的专业化服务。
下载|体验更多E-iceblue产品,请咨询,或拨打产品热线:023-68661681
加入E-iceblue技术交流QQ群(767755948),与更多小伙伴一起探讨提升开发技能。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
文章转载自:慧都网