翻譯|使用教程|編輯:吉煒煒|2025-02-14 14:12:04.767|閱讀 105 次
概述:在本文中,您將學習如何使用 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@fc6vip.cn
文章轉載自:慧都網