翻译|使用教程|编辑:吉炜炜|2025-02-14 14:12:04.767|阅读 121 次
概述:在本文中,您将学习如何使用 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@ke049m.cn
文章转载自:慧都网