使用C#代碼進(jìn)行Word文檔中的郵件合并功能
引言
郵件合并是 Microsoft Word 中的一個(gè)強(qiáng)大功能,它允許您通過單一模板文檔和數(shù)據(jù)源創(chuàng)建多份文檔,例如信件、標(biāo)簽、信封,甚至電子郵件。對(duì)于需要向大量收件人發(fā)送個(gè)性化信件的任務(wù),郵件合并尤其有用,無需逐一編寫每封信件。
在本文中,您將學(xué)習(xí)如何使用 Spire.Doc for .NET 在 Word 文檔中執(zhí)行郵件合并。
安裝 Spire.Doc for .NET
首先,您需要將 Spire.Doc for .NET 包中的 DLL 文件添加為您 .NET 項(xiàng)目的引用。這些 DLL 文件可以通過以下鏈接下載,或者通過 NuGet 安裝。
PM> Install-Package Spire.Doc
了解郵件合并的組成部分
- 主文檔:這是模板文件,您可以在其中設(shè)計(jì)信件、標(biāo)簽或其他類型的文檔,并添加占位符(也稱為合并字段),這些占位符將由數(shù)據(jù)源中的數(shù)據(jù)填充。
- 數(shù)據(jù)源:這是包含您希望用于填充主文檔信息的電子表格或數(shù)據(jù)庫(kù)。它可以是 Excel 表格、Access 數(shù)據(jù)庫(kù)、CSV 文件、XML 文件,甚至是簡(jiǎn)單的文本文件。
- 合并字段:這是主文檔中的占位符,會(huì)被數(shù)據(jù)源中對(duì)應(yīng)記錄的數(shù)據(jù)替換。
創(chuàng)建模板 Word 文檔
要生成帶有合并字段的模板 Word 文檔,建議使用 Microsoft Word 等 Word 編輯器。Word 編輯器的可視化界面可以讓您以交互方式為模板設(shè)計(jì)獨(dú)特的布局、格式和其他元素。
示例代碼:
using Spire.Doc;
using Spire.Doc.Documents;
namespace CreateTemplate
{
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建 Document 對(duì)象
Document document = new Document();
// 添加一個(gè)節(jié)
Section section = document.AddSection();
// 添加一個(gè)段落
Paragraph paragraph = section.AddParagraph();
// 向段落中添加文本和郵件合并字段
paragraph.AppendText("Full Name: ");
paragraph.AppendField("Name", FieldType.FieldMergeField);
paragraph.AppendBreak(BreakType.LineBreak);
paragraph.AppendText("Email Address: ");
paragraph.AppendField("Email", FieldType.FieldMergeField);
paragraph.AppendBreak(BreakType.LineBreak);
paragraph.AppendText("Avatar: ");
paragraph.AppendField("Image:Avatar", FieldType.FieldMergeField);
// 保存文檔
document.SaveToFile("Template.docx", FileFormat.Docx2019);
// 釋放資源
document.Dispose();
}
}
}Word 文檔中的簡(jiǎn)單郵件合并
Spire.Doc 提供了 MailMerge.Execute() 方法,用于在 Word 文檔中執(zhí)行指定的郵件合并操作。該方法有 6 種重載,允許用戶從不同的數(shù)據(jù)源執(zhí)行郵件合并,例如 DataTable、DataView 和字符串?dāng)?shù)組。
示例代碼:
using Spire.Doc;
using Spire.Doc.Reporting;
using System.Drawing;
namespace MailMergeInDocument
{
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建 Document 對(duì)象
Document document = new Document();
// 加載模板 Word 文檔
document.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Template.docx");
// 指定字段名稱
String[] fieldNames = {
"Name",
"Email",
"Avatar"
};
// 指定用于填充字段的值
String[] fieldValues = {
"John Smith",
"john.smith@e-iceblue.com",
"C:\\Users\\Administrator\\Desktop\\avatar.png"
};
// 注冊(cè)合并圖片字段時(shí)觸發(fā)的事件
document.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MailMerge_MergeImageField);
// 執(zhí)行郵件合并
document.MailMerge.Execute(fieldNames, fieldValues);
// 保存文檔
document.SaveToFile("MailMerge.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);
}
}
}
}帶區(qū)域的郵件合并
區(qū)域是指文檔中希望插入數(shù)據(jù)源內(nèi)容的特定區(qū)域。郵件合并會(huì)針對(duì)數(shù)據(jù)源中的每條記錄重復(fù)該區(qū)域。Spire.Doc 提供了 MailMerge.ExecuteWithRegion() 方法,用于執(zhí)行帶區(qū)域的郵件合并。
示例代碼:
using Spire.Doc;
using System.Collections;
using System.Data;
namespace MailMergeWithNestedRegions
{
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建 Document 對(duì)象
Document document = new Document();
// 加載模板 Word 文檔
document.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Template.docx");
// 從 XML 文件讀取數(shù)據(jù)到 DataSet 對(duì)象
DataSet dataSet = new DataSet();
dataSet.ReadXml("C:\\Users\\Administrator\\Desktop\\Orders.xml");
// 創(chuàng)建 List 對(duì)象以存儲(chǔ)合并字段信息
List list = new List();
// 創(chuàng)建兩個(gè) DictionaryEntry 對(duì)象并添加到列表中(每個(gè)對(duì)象指定合并字段名稱及關(guān)聯(lián)表達(dá)式)
DictionaryEntry dictionaryEntry = new DictionaryEntry("Customer", string.Empty);
list.Add(dictionaryEntry);
dictionaryEntry = new DictionaryEntry("Order", "Customer_Id = %Customer.Customer_Id%");
list.Add(dictionaryEntry);
// 執(zhí)行帶嵌套區(qū)域的郵件合并操作
document.MailMerge.ExecuteWidthNestedRegion(dataSet, list);
// 保存到文件
document.SaveToFile("MailMergeWithNestedRegions.docx", FileFormat.Docx2019);
// 釋放資源
document.Dispose();
}
}
}到此這篇關(guān)于使用C#代碼進(jìn)行Word文檔中的郵件合并功能的文章就介紹到這了,更多相關(guān)C#合并Word郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#控制臺(tái)程序同步調(diào)用WebApi實(shí)現(xiàn)方式
控制臺(tái)程序作為Job時(shí),需同步調(diào)用WebApi以確保獲取返回結(jié)果后執(zhí)行后續(xù)操作,否則會(huì)引發(fā)TaskCanceledException異常,同步處理可避免異步導(dǎo)致的錯(cuò)誤,用戶提供了Cls001類中的實(shí)現(xiàn)示例,供參考學(xué)習(xí)2025-08-08
深入解析C#中的交錯(cuò)數(shù)組與隱式類型的數(shù)組
這篇文章主要介紹了深入解析C#中的交錯(cuò)數(shù)組與隱式類型的數(shù)組,隱式類型的數(shù)組通常與匿名類型以及對(duì)象初始值設(shè)定項(xiàng)和集合初始值設(shè)定項(xiàng)一起使用,需要的朋友可以參考下2016-01-01
C#實(shí)現(xiàn)對(duì)二維數(shù)組排序的方法
這篇文章主要介紹了C#實(shí)現(xiàn)對(duì)二維數(shù)組排序的方法,實(shí)例分析了C#數(shù)組遍歷與排序的相關(guān)技巧,需要的朋友可以參考下2015-06-06
100行C#代碼實(shí)現(xiàn)經(jīng)典掃雷游戲
這篇文章主要為大家詳細(xì)介紹了如何用100行C#代碼實(shí)現(xiàn)經(jīng)典的掃雷游戲,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02
.NET/C# 使用Stopwatch測(cè)量運(yùn)行時(shí)間
這篇文章主要介紹了.NET/C# 使用Stopwatch測(cè)量運(yùn)行時(shí)間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
c#使用windows服務(wù)更新站點(diǎn)地圖的詳細(xì)示例
這篇文章主要介紹了c#使用windows服務(wù)更新站點(diǎn)地圖的詳細(xì)示例,需要的朋友可以參考下2014-04-04
C#實(shí)現(xiàn)的ACCESS數(shù)據(jù)庫(kù)操作類完整實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的ACCESS數(shù)據(jù)庫(kù)操作類,結(jié)合完整實(shí)例形式分析了C#針對(duì)access數(shù)據(jù)庫(kù)增刪改查、事務(wù)、結(jié)果處理等相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
c#打印預(yù)覽控件中實(shí)現(xiàn)用鼠標(biāo)移動(dòng)頁(yè)面功能代碼分享
項(xiàng)目中需要實(shí)現(xiàn)以下功能:打印預(yù)覽控件中,可以用鼠標(biāo)拖動(dòng)頁(yè)面,以查看超出顯示范圍之外的部分內(nèi)容,下面就是實(shí)現(xiàn)代碼2013-12-12

