Automatyzacja tworzenia spersonalizowanych dokumentów—takich jak raporty, listy i faktury—może znacząco zwiększyć wydajność w Twoim przepływie pracy. Dzięki C# Mail Merge zasilanemu przez Aspose.Words for .NET, możesz to osiągnąć bezproblemowo. Ten przewodnik przeprowadzi Cię przez użycie Aspose.Words Mail Merge Plugin do efektywnego i skalowalnego generowania dokumentów w aplikacjach .NET—bez potrzeby korzystania z MS Word lub Office Interop. Na koniec tego przewodnika będziesz w stanie zintegrować C# mail merge do automatyzacji raportów i uprościć swój przepływ pracy związany z raportowaniem.


Spis treści


Czym jest Mail Merge?

Mail Merge to potężna metodologia dynamicznego generowania dokumentów poprzez wypełnianie szablonów danymi z różnych źródeł. Dzięki Aspose.Words możesz automatyzować zadania takie jak:

  • Generowanie spersonalizowanych listów i faktur.
  • Tworzenie raportów zbiorczych przy użyciu uporządkowanych formatów, takich jak XML, JSON lub bazy danych, umożliwiających dynamiczne generowanie raportów z C# i Aspose.Words.

Źródła danych do Mail Merge

Aspose.Words obsługuje różnorodne źródła danych, w tym:

  • Obiekty: Wypełnianie szablonów przy użyciu instancji klas.
  • XML: Ładowanie uporządkowanych danych dla dynamicznych pól.
  • JSON: Łatwe integrowanie z nowoczesnymi interfejsami API.
  • CSV: Wykorzystanie danych tabelarycznych do zbiorczego generowania dokumentów.
  • DataTable/DataSet: Wykorzystanie ADO.NET do integracji z bazą danych.

Przygotowanie szablonu do Mail Merge

Szablon mail merge to dokument zawierający pola scalania, które będą wypełniane danymi z określonego źródła danych podczas wykonania. Szablon może być w formacie DOC lub DOCX i nie wymaga określonego stylu. Wykonaj te kroki, aby stworzyć szablon mail merge:

  1. Otwórz swój dokument lub stwórz nowy w MS Word.
  2. Umieść kursor w miejscu, w którym chcesz wstawić pole scalania.
  3. Z menu Wstaw wybierz opcję Pole.
  4. Z listy Nazwy pól wybierz MergeField.
  5. Określ nazwę dla pola scalania w polu Nazwa pola i kliknij OK.
  6. Zapisz dokument.

Poniższy zrzut ekranu ilustruje przykładowy szablon dokumentu.

Szablon Mail Merge

.NET Mail Merge API - Instalacja

Możesz zainstalować Aspose.Words for .NET na różne sposoby:

Wykonaj Mail Merge w dokumencie Word za pomocą C#

Gdy Twój szablon jest gotowy, możesz wykonać scalanie, aby wygenerować dokumenty. Oto kroki, aby wykonać mail merge na przygotowanym szablonie:

  1. Załaduj dokument szablonu przy użyciu klasy Document.
  2. Ustaw wymagane opcje scalania, takie jak Document.MailMerge.TrimWhitespaces.
  3. Wykonaj mail merge, używając metody Document.MailMerge.Execute(), przekazując źródło danych jako parametr.
  4. Zapisz wygenerowany dokument przy użyciu metody Document.Save(String).

Oto przykładowy kod ilustrujący, jak automatyzować generowanie raportów w C# przy użyciu tablicy wartości:


Dokument Word po Mail Merge

Wykonaj Mail Merge w C#

Wykonaj Mail Merge z wykorzystaniem źródła danych XML w C#

Pliki XML są powszechnie wykorzystywane do przechowywania i przesyłania danych. Aspose.Words for .NET obsługuje XML jako źródło danych dla operacji mail merge. Po prostu wczytaj XML do obiektu DataSet i wykonaj mail merge. Poniżej znajduje się przykładowy plik XML dla naszego przypadku użycia.

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

Poniższy przykładowy kod pobiera dane z źródła danych XML i wykonuje mail merge przy użyciu C#.

Poniżej znajduje się szablon mail merge szablon, który zostanie wypełniony danymi z pliku XML.

Szablon Mail Merge dla XML

Ten obraz przedstawia pierwszą stronę wynikowego dokumentu Word uzyskanego po wykonaniu mail merge.

Wykonaj Mail Merge z XML w C#

Niestandardowe formatowanie pól scalania

Aspose.Words for .NET oferuje zaawansowaną kontrolę nad procesem scalania. Właściwość MailMerge.FieldMergingCallback pozwala skonfigurować zachowanie scalania w miarę napotkania każdego pola scalania. Implementacja metod IFieldMergingCallback.FieldMerging i IFieldMergingCallback.ImageFieldMerging umożliwia dostosowanie operacji scalania.

Poniżej znajduje się przykładowy kod ilustrujący, jak zastosować niestandardowe formatowanie podczas scalania poprzez podany przykładowy szablon:

Poniżej znajduje się implementacja klasy HandleMergeFieldAlternatingRows.

Mail Merge z regionami przy użyciu C#

W niektórych przypadkach może być konieczne wypełnienie i powtórzenie konkretnego regionu w dokumencie Word. W takich scenariuszach wykorzystaj mail merge z regionami. Aby utworzyć region, określ zarówno początek, jak i koniec regionu; mail merge powtórzy ten region dla każdego rekordu w źródle danych. Przykład szablonu poniżej zawiera dwa regiony—Zamówienia i SzczegółyZamówienia—wykorzystujące pola scalania «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails» i «TableEnd:OrderDetails».

Szablon Mail Merge z regionami

Oto przykładowy kod, który wykonuje mail merge na podstawie regionów dla wcześniej wspomnianego szablonu.

Poniższe metody ilustrują, jak odczytać dane z bazy danych.

Zagnieżdżony Mail Merge

Często dane z źródła są zorganizowane w formatach relacyjnych. Na przykład “Zamówienia” mogą mieć relację jeden-do-wielu z “SzczegółamiZamówienia”, które przechowują rekordy przedmiotów w zamówieniu. W takich scenariuszach wykorzystaj zagnieżdżone scalanie. Poniżej znajduje się przykładowy szablon faktury, który dobrze pasuje do tego scenariusza.

Szablon Mail Merge z regionami

Poniżej znajduje się źródło danych XML dla naszego przykładu zagnieżdżonego mail merge.

<?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>

Odpowiedni plik OrderSchema.xsd dla tego XML to:

<?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>

Poniższy przykładowy kod wykonuje zagnieżdżone mail merge przy użyciu C#.

Dokument Word po Mail Merge

Poniżej znajduje się pierwsza strona wynikowego dokumentu Word uzyskanego po wykonaniu zagnieżdżonego mail merge.

Dokument Word po Mail Merge

Podsumowanie

Aspose.Words for .NET to kompleksowe API do mail merge, które oferuje zarówno standardowe, jak i rozszerzone funkcje odpowiednie dla aplikacji .NET. Dzięki zaledwie kilku liniom kodu możesz bezproblemowo opracować proste lub złożone raporty z różnych źródeł danych. Aby uzyskać wskazówki dotyczące najlepszych praktyk automatyzacji generowania raportów w .NET, zapoznaj się z dokumentacją. Aby rozpocząć pracę z Aspose.Words for .NET, zapoznaj się z dostępnymi przewodnikami dla deweloperów i przykładowym kodem na GitHubie. Aspose Plugin oferuje również zaawansowane funkcje do generowania raportów.

Wypróbuj Aspose.Words for .NET za darmo

Możesz uzyskać darmową tymczasową licencję, aby wypróbować Aspose.Words for .NET bez ograniczeń. Uzyskaj swoją tymczasową licencję teraz.