Automating the creation of personalized documents—such as reports, letters, and invoices—can significantly enhance efficiency in your workflow. With C# Mail Merge powered by Aspose.Words for .NET, you can achieve this seamlessly. This guide will walk you through using the Aspose.Words Mail Merge Plugin to perform efficient and scalable document generation within your .NET applications—without the need for MS Word or Office Interop. By the end of this guide, you will be equipped to integrate C# mail merge for report automation and streamline your reporting workflow.
Contents
- What is Mail Merge?
- Data Sources for Mail Merge
- Preparing Mail Merge Templates
- Getting Started with Aspose.Words for .NET
- Perform Mail Merge with Sample Data
- Mail Merge with XML Data
- Custom Merge Field Formatting
- Mail Merge with Regions
- Nested Mail Merge
- Conclusion
What is Mail Merge?
Mail Merge là một phương pháp mạnh mẽ để tạo động các tài liệu bằng cách điền các mẫu với dữ liệu từ nhiều nguồn khác nhau. Với Aspose.Words, bạn có thể tự động hóa các tác vụ như:
- Tạo các bức thư và hóa đơn cá nhân hóa.
- Tạo báo cáo hàng loạt bằng cách sử dụng các định dạng có cấu trúc như XML, JSON hoặc cơ sở dữ liệu, cho phép tạo báo cáo động với C# và Aspose.Words.
Data Sources for Mail Merge
Aspose.Words hỗ trợ nhiều nguồn dữ liệu khác nhau, bao gồm:
- Objects: Điền các mẫu bằng cách sử dụng các thể hiện lớp.
- XML: Tải dữ liệu có cấu trúc cho các trường động.
- JSON: Dễ dàng tích hợp với các API hiện đại.
- CSV: Tận dụng dữ liệu dạng bảng cho việc tạo tài liệu hàng loạt.
- DataTable/DataSet: Sử dụng ADO.NET để tích hợp cơ sở dữ liệu.
Preparing Template for Mail Merge
Mẫu mail merge là tài liệu chứa các trường hợp sẽ được điền với dữ liệu từ nguồn dữ liệu mà bạn đã chỉ định trong quá trình thực thi. Mẫu có thể ở định dạng DOC hoặc DOCX và không yêu cầu một kiểu dáng cụ thể. Thực hiện theo các bước sau để tạo một mẫu mail merge:
- Mở tài liệu của bạn hoặc tạo một tài liệu mới trong MS Word.
- Đặt con trỏ tại vị trí bạn muốn chèn một trường hợp.
- Từ menu Chèn, chọn tùy chọn Trường.
- Từ danh sách Tên trường, chọn MergeField.
- Chỉ định một tên cho trường hợp trong ô Tên trường và nhấp OK.
- Lưu tài liệu.
Ảnh chụp màn hình sau đây minh họa một mẫu mẫu tài liệu.

.NET Mail Merge API - Installation
Bạn có thể cài đặt Aspose.Words for .NET thông qua nhiều phương pháp:
Perform Mail Merge in Word Document using C#
Khi mẫu của bạn đã sẵn sàng, bạn có thể thực hiện mail merge để tạo ra các tài liệu. Dưới đây là các bước để thực hiện mail merge trên mẫu đã chuẩn bị của bạn:
- Tải tài liệu mẫu bằng cách sử dụng lớp Document.
- Đặt các tùy chọn mail merge cần thiết, chẳng hạn như Document.MailMerge.TrimWhitespaces.
- Thực hiện mail merge bằng cách sử dụng phương thức Document.MailMerge.Execute(), truyền nguồn dữ liệu làm tham số.
- Lưu tài liệu đã tạo bằng phương thức Document.Save(String).
Dưới đây là một mẫu mã minh họa cách tự động hóa việc tạo báo cáo trong C# bằng cách sử dụng một mảng giá trị:
Word Document after Mail Merge

Perform Mail Merge using XML Data Source in C#
Các tệp XML thường được sử dụng để lưu trữ và chuyển giao dữ liệu. Aspose.Words for .NET hỗ trợ XML như một nguồn dữ liệu cho các hoạt động mail merge. Chỉ cần đọc XML vào một đối tượng DataSet và thực hiện mail merge. Dưới đây là một tệp XML mẫu cho trường hợp sử dụng của chúng tôi.
<customers>
<customer Name="John Ben Jan" ID="1" Domain="History" City="Boston"/>
<customer Name="Lisa Lane" ID="2" Domain="Chemistry" City="LA"/>
<customer Name="Dagomir Zits" ID="3" Domain="Heraldry" City="Milwaukee"/>
<customer Name="Sara Careira Santy" ID="4" Domain="IT" City="Miami"/>
</customers>
Mẫu mã sau đây lấy dữ liệu từ một nguồn dữ liệu XML và thực hiện mail merge bằng C#.
Dưới đây là mẫu mail merge sẽ được điền với dữ liệu từ tệp XML.

Hình ảnh này đại diện cho trang đầu tiên của tài liệu Word kết quả thu được sau khi thực hiện mail merge.

Custom Formatting of Merge Fields
Aspose.Words for .NET cung cấp khả năng kiểm soát nâng cao đối với quy trình mail merge. Thuộc tính MailMerge.FieldMergingCallback cho phép bạn cấu hình hành vi mail merge khi mỗi trường hợp được gặp. Việc thực hiện các phương thức IFieldMergingCallback.FieldMerging và IFieldMergingCallback.ImageFieldMerging cho phép tùy chỉnh hoạt động mail merge.
Dưới đây là một mẫu mã minh họa cách áp dụng định dạng tùy chỉnh trong quá trình mail merge thông qua mẫu ví dụ đã cung cấp:
Sau đây là lớp HandleMergeFieldAlternatingRows.
Mail Merge with Regions using C#
Trong một số trường hợp, bạn có thể cần điền và lặp lại một vùng cụ thể trong tài liệu Word. Đối với các tình huống như vậy, hãy sử dụng mail merge với các vùng. Để tạo một vùng, chỉ định cả điểm bắt đầu và kết thúc của vùng; mail merge sẽ sau đó lặp lại vùng này cho mỗi bản ghi trong nguồn dữ liệu. Ví dụ mẫu dưới đây chứa hai vùng—Orders và OrderDetails—sử dụng các trường hợp «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails» và «TableEnd:OrderDetails».

Dưới đây là một mẫu mã thực hiện mail merge dựa trên các vùng cho mẫu đã đề cập trước đó.
Các phương thức sau đây minh họa cách đọc dữ liệu từ một cơ sở dữ liệu.
Nested Mail Merge
Thường thì, dữ liệu từ nguồn được cấu trúc theo định dạng quan hệ. Ví dụ, “Orders” có thể có mối quan hệ một-nhiều với “OrderDetails,” lưu giữ các bản ghi của các mục trong một đơn hàng. Trong các tình huống như vậy, hãy sử dụng mail merge lồng nhau. Dưới đây là một mẫu mẫu hóa đơn phù hợp cho tình huống này.

Dưới đây là một nguồn dữ liệu XML cho ví dụ mail merge lồng nhau của chúng tôi.
<?xml version="1.0" encoding ="utf-8"?>
<Orders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="OrdersSchema.xsd">
<Order>
<Number>23</Number>
<Address>Nelson Street</Address>
<Suburb>Howick</Suburb>
<City>Auckland</City>
<Phonenumber>543 1234</Phonenumber>
<Date>03/01/2010</Date>
<Total>14.00</Total>
<Item>
<Name>BBQ Chicken Pizza</Name>
<Price>6.00</Price>
<Quantity>1</Quantity>
<ItemTotal>6.00</ItemTotal>
</Item>
<Item>
<Name>1.5 Litre Coke</Name>
<Price>4.00</Price>
<Quantity>2</Quantity>
<ItemTotal>8.00</ItemTotal>
</Item>
</Order>
<Order>
<Number>10</Number>
<Address>Parkville Avenue</Address>
<Suburb>Pakuranga</Suburb>
<City>Auckland</City>
<Phonenumber>548 7342</Phonenumber>
<Date>05/03/2010</Date>
<Total>6.00</Total>
<Item>
<Name>Hawaiian Pizza</Name>
<Price>4.00</Price>
<Quantity>1</Quantity>
<ItemTotal>4.00</ItemTotal>
</Item>
<Item>
<Name>Fries</Name>
<Price>1.00</Price>
<Quantity>2</Quantity>
<ItemTotal>2.00</ItemTotal>
</Item>
</Order>
</Orders>
Tệp OrderSchema.xsd tương ứng cho XML này là:
<?xml version="1.0" encoding ="utf-8"?>
<xs:schema id="OrdersSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Orders">
<xs:complexType>
<xs:sequence>
<xs:element name="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="Number"/>
<xs:element name="Address"/>
<xs:element name="Suburb"/>
<xs:element name="City"/>
<xs:element name="Phonenumber"/>
<xs:element name="Date"/>
<xs:element name="Total"/>
<xs:element name="Item">
<xs:complexType>
<xs:sequence>
<xs:element name="Name"/>
<xs:element name="Price"/>
<xs:element name="Quantity"/>
<xs:element name="ItemTotal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Mẫu mã sau đây thực hiện mail merge lồng nhau bằng C#.
Word Document after Mail Merge
Dưới đây là trang đầu tiên của tài liệu Word kết quả thu được sau khi thực hiện mail merge lồng nhau.

Conclusion
Aspose.Words for .NET là một API mail merge toàn diện cung cấp cả các tính năng tiêu chuẩn và mở rộng phù hợp cho các ứng dụng .NET. Chỉ với vài dòng mã, bạn có thể phát triển các báo cáo đơn giản hoặc phức tạp từ nhiều nguồn dữ liệu một cách liền mạch. Để biết hướng dẫn về các phương pháp tốt nhất cho việc tạo báo cáo tự động trong .NET, hãy tham khảo tài liệu. Để bắt đầu với Aspose.Words for .NET, hãy khám phá các hướng dẫn dành cho nhà phát triển và mã mẫu trên GitHub. Aspose Plugin cũng cung cấp các chức năng nâng cao cho việc tạo báo cáo.
Try Aspose.Words for .NET for Free
Bạn có thể nhận một giấy phép tạm thời miễn phí để thử Aspose.Words for .NET mà không có giới hạn. Nhận giấy phép tạm thời của bạn ngay bây giờ.