Giới thiệu

Tiết kiệm thời gian và công sức bằng cách tự động hóa việc tạo tài liệu cá nhân hóa như báo cáo, thư và hóa đơn với C# Mail Merge được hỗ trợ bởi Aspose.Words cho .NET. Hướng dẫn này giải thích cách sử dụng Plugin Mail Merge của Aspose.Words để thực hiện việc tạo tài liệu hiệu quả và quy mô trong các ứng dụng .NET của bạn—không cần MS Word hay Office Interop. Bạn sẽ học cách tích hợp C# mail merge cho tự động hóa báo cáo, cho phép bạn cải thiện quy trình báo cáo của mình.


Nội dung:


Mail Merge là gì?

Mail Merge là một phương pháp để tạo tài liệu động 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 dễ dàng các công việc như:

  • Tạo thư và hóa đơn với các chi tiết cá nhân hóa.
  • Tạo báo cáo hàng loạt bằng cách sử dụng dữ liệu từ 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.

Nguồn dữ liệu cho Mail Merge

Aspose.Words hỗ trợ nhiều loại nguồn dữ liệu khác nhau:

  • Đối tượng: Điền vào các mẫu bằng cách sử dụng các phiên bả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 theo bảng cho việc tạo tài liệu hàng loạt.
  • DataTable/DataSet: Sử dụng ADO.NET cho tích hợp cơ sở dữ liệu.

Chuẩn bị mẫu cho Mail Merge

Mẫu mail merge là tài liệu chứa các trường gộp mà sẽ được điền dữ liệu từ nguồn dữ liệu bạn chỉ định trong quá trình thực hiện. Mẫu có thể là định dạng DOC hoặc DOCX; nó không nhất thiết phải yêu cầu một kiểu mẫu cụ thể. Thực hiện theo các bước sau để tạo một mẫu mail merge:

  1. Mở tài liệu của bạn hoặc tạo một mới trong MS Word.
  2. Đặt con trỏ vào nơi bạn muốn chèn một trường gộp.
  3. Từ menu Chèn, chọn tùy chọn Trường.
  4. Từ danh sách Tên trường, chọn MergeField.
  5. Chỉ định một tên cho trường gộp trong ô Tên trường và nhấn OK.
  6. Lưu tài liệu.

Ảnh chụp màn hình dưới đây minh họa tài liệu mẫu.

Mẫu Mail Merge

API Mail Merge .NET - Cài đặt

Bạn có thể cài đặt Aspose.Words cho .NET thông qua nhiều phương pháp:

Thực hiện Mail Merge trong tài liệu Word bằng C#

Khi mẫu của bạn đã sẵn sàng, hãy thực hiện mail merge để tạo tài liệu. Dưới đây là các bước để thực hiện mail merge trên mẫu bạn đã chuẩn bị:

  1. Tải tài liệu mẫu bằng cách sử dụng lớp Document.
  2. Đặt các tùy chọn mail merge cần thiết, chẳng hạn như Document.MailMerge.TrimWhitespaces.
  3. Thực hiện mail merge bằng cách sử dụng phương thức Document.MailMerge.Execute(), truyền dữ liệu nguồn dưới dạng tham số.
  4. 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 code minh họa cách tự động hóa quá trình tạo báo cáo trong C# bằng cách sử dụng một mảng các giá trị:


Tài liệu Word sau Mail Merge

Thực hiện Mail Merge trong C#

Thực hiện Mail Merge bằng nguồn dữ liệu XML trong C#

Các tệp XML thường được sử dụng để lưu trữ và chuyển giao dữ liệu. Aspose.Words cho .NET cũng 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 code 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 mẫu sẽ được điền dữ liệu từ tệp XML.

Mẫu Mail Merge cho XML

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

Thực hiện Mail Merge với XML trong C#

Định dạng tùy chỉnh các trường gộp

Aspose.Words cho .NET cung cấp 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 gộp được gặp. Việc triển khai các phương thức IFieldMergingCallback.FieldMergingIFieldMergingCallback.ImageFieldMerging cho phép tùy chỉnh hoạt động mail merge.

Dưới đây là một mẫu code 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 đã cung cấp:

Dưới đây là cách triển khai lớp HandleMergeFieldAlternatingRows.

Mail Merge với các vùng bằng C#

Trong một số trường hợp, bạn có thể cần điền và lặp lại một khu vực cụ thể trong tài liệu Word. Đối với những trường hợp 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ả bắt đầu và kết thúc của vùng; mail merge sẽ lặp lại vùng này cho mỗi bản ghi trong nguồn dữ liệu. Mẫu dưới đây chứa hai vùng—Đơn hàng và Chi tiết Đơn hàng—sử dụng các trường gộp «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails», và «TableEnd:OrderDetails».

Mail Merge với các vùng

Dưới đây là một mẫu code thực hiện mail merge dựa trên các vùng cho mẫu mẫu đã đề cập trước đó.

Các phương thức sau đây minh họa cách đọc dữ liệu từ cơ sở dữ liệu.

Các vùng Mail Merge lồng nhau

Thường thì, dữ liệu từ nguồn được cấu trúc theo các định dạng quan hệ. Ví dụ, “Đơn hàng” có thể có mối quan hệ một-nhiều với “Chi tiết Đơn hàng,” nơi giữ hồ sơ của các mặt hàng 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 hóa đơn phù hợp cho kịch bản này.

Mẫu Mail Merge với các vùng

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 code sau đây thực hiện mail merge lồng nhau bằng C#.

Tài liệu Word sau Mail Merge

Dưới đây là trang đầu tiên của tài liệu Word kết quả có được sau khi thực hiện mail merge lồng nhau.

Tài liệu Word sau Mail Merge

Kết luận

Aspose.Words cho .NET là một API mail merge toàn diện cung cấp 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 một 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ừ các nguồn dữ liệu đa dạng một cách liền mạch. Để tìm hiểu về các phương pháp tạo báo cáo tự động tốt nhất trong .NET, hãy tham khảo tài liệu. Để bắt đầu với Aspose.Words cho .NET, hãy khám phá các hướng dẫn cho nhà phát triển và mã mẫu trên GitHub. Plugin Aspose cũng cung cấp các chức năng nâng cao cho việc tạo báo cáo.

Thử Aspose.Words cho .NET miễn phí

Bạn có thể lấy một giấy phép tạm thời miễn phí để thử Aspose.Words cho .NET mà không có hạn chế. Lấy giấy phép tạm thời của bạn ngay bây giờ.

Xem thêm