Giới thiệu

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—có thể tiết kiệm cho bạn cả thời gian và công sức. Với C# Mail Merge được hỗ trợ bởi Aspose.Words cho .NET, bạn có thể đạt được điều này một cách liền mạch. Hướng dẫn này sẽ hướng dẫn bạn 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à có thể mở rộng trong các ứng dụng .NET của bạn—mà không cần MS Word hoặc Office Interop. Cuối cùng, bạn sẽ được trang bị để tích hợp C# mail merge cho tự động hóa báo cáo và tối ưu hóa quy trình báo cáo của bạn.


Nội dung:


Mail Merge là gì?

Mail Merge là một phương pháp mạnh mẽ để tạo ra tài liệu một cách động bằng cách điền thông tin vào các mẫ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 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.

Nguồn dữ liệu cho Mail Merge

Aspose.Words hỗ trợ nhiều nguồn dữ liệu khác nhau, bao gồm:

  • Đối tượng: Điền thông tin vào 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 theo bảng cho việc tạo tài liệu hàng loạt.
  • DataTable/DataSet: Sử dụng ADO.NET cho việc 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 hợp sẽ được điền thông tin từ nguồn dữ liệu mà bạn đã chỉ định trong quá trình thực hiện. 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 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 cái mới trong MS Word.
  2. Đặt con trỏ tại vị trí bạn muốn chèn trường hợ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. Xác định một tên cho trường hợp trong ô Tên trường và nhấp OK.
  6. Lưu tài liệu.

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

Mail Merge Template

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, 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:

  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 nguồn dữ liệu làm tham số.
  4. Lưu tài liệu đã tạo bằng cách sử dụ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ị:


Tài liệu Word sau khi Mail Merge

Execute Mail Merge in C#

Thực hiện Mail Merge sử dụ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 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ã dưới đâ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 thông tin từ tệp XML.

Mail Merge Template for 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.

Execute Mail Merge with XML in C#

Định dạng trường hợp nhất tùy chỉnh

Aspose.Words cho .NET cung cấp kiểm soát nâng cao đối với quá 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 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 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:

Dưới đây là lớp HandleMergeFieldAlternatingRows.

Mail Merge với các vùng sử dụ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 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, xác định cả điểm bắt đầu và điểm 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. 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».

Mail Merge with Regions

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.

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ụ, “Orders” có thể có mối quan hệ một-nhiều với “OrderDetails,” giữ các bản ghi của các mục trong một đơn hàng. Trong những 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.

Mail Merge Template with Regions

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

Tài liệu Word sau khi 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.

Word Document after Mail Merge

Kết luận

Aspose.Words cho .NET là một API mail merge toàn diện cung cấp 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. Để được hướng dẫn về các thực hành tốt nhất trong việc tự động hóa báo cáo .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 dành 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ể nhận giấy phép tạm thời miễn phí để thử Aspose.Words cho .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ờ.

Xem thêm