Wprowadzenie

Automatyzacja tworzenia spersonalizowanych dokumentów — takich jak raporty, listy i faktury — może zaoszczędzić czas i wysiłek. Dzięki C# Mail Merge zasilanemu przez Aspose.Words dla .NET, możesz to osiągnąć bezproblemowo. Ten przewodnik przeprowadzi cię przez użycie Wtyczki Mail Merge Aspose.Words do efektywnego i skalowalnego generowania dokumentów w Twoich aplikacjach .NET — bez potrzeby posiadania MS Word lub Office Interop. Na koniec będziesz gotowy do integracji C# mail merge do automatyzacji raportów i uproszczenia swojego procesu raportowania.


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 masowych raportów przy użyciu strukturalnych formatów, takich jak XML, JSON lub bazy danych, co umożliwia dynamiczne generowanie raportów za pomocą C# i Aspose.Words.

Źródła danych dla Mail Merge

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

  • Obiekty: Wypełnij szablony używając instancji klas.
  • XML: Ładuj ustrukturyzowane dane dla dynamicznych pól.
  • JSON: Łatwo integruj się z nowoczesnymi interfejsami API.
  • CSV: Wykorzystaj dane tabelaryczne do masowej generacji dokumentów.
  • DataTable/DataSet: Wykorzystaj 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 konkretnego stylu. Wykonaj następujące kroki, aby stworzyć szablon mail merge:

  1. Otwórz 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 dla .NET na kilka sposobów:

Wykonaj Mail Merge w dokumencie Word używając C#

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

  1. Załaduj dokument szablonu używając klasy Document.
  2. Ustaw wymagane opcje mail merge, 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 używając metody Document.Save(String).

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


Dokument Word po Mail Merge

Wykonaj Mail Merge w C#

Wykonaj Mail Merge używając źródła danych XML w C#

Pliki XML są powszechnie wykorzystywane do przechowywania i transferu danych. Aspose.Words dla .NET obsługuje XML jako źródło danych dla operacji mail merge. Wystarczy wczytać XML do obiektu DataSet i wykonać 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 używając 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ę uzyskanego dokumentu Word po wykonaniu mail merge.

Wykonaj Mail Merge z XML w C#

Niestandardowe formatowanie pól scalania

Aspose.Words dla .NET zapewnia ulepszoną kontrolę nad procesem mail merge. Właściwość MailMerge.FieldMergingCallback pozwala skonfigurować zachowanie mail merge w miarę napotkania każdego pola scalania. Implementacja metod IFieldMergingCallback.FieldMerging oraz IFieldMergingCallback.ImageFieldMerging umożliwia dostosowanie operacji mail merge.

Poniżej znajduje się przykładowy kod ilustrujący, jak zastosować niestandardowe formatowanie podczas mail merge za pomocą dostarczonego szablonu:

Poniżej znajduje się implementacja klasy HandleMergeFieldAlternatingRows.

Mail Merge z regionami używając 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 stworzyć 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. Poniższy przykład szablonu zawiera dwa regiony — Zamówienia i SzczegółyZamówień — wykorzystujące pola scalania «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails» oraz «TableEnd:OrderDetails».

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żone regiony Mail Merge

Często dane ze źródła są strukturalnie w formatach relacyjnych. Na przykład “Zamówienia” mogą mieć relację jeden-do-wielu z “SzczegółyZamówień”, która przechowuje rekordy przedmiotów w zamówieniu. W takich scenariuszach wykorzystaj zagnieżdżony mail merge. 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 z zagnieżdżonym 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żony mail merge używając C#.

Dokument Word po Mail Merge

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

Dokument Word po Mail Merge

Podsumowanie

Aspose.Words dla .NET to kompleksowe API mail merge, które zapewnia zarówno standardowe, jak i rozszerzone funkcje odpowiednie dla aplikacji .NET. Dzięki zaledwie kilku liniom kodu możesz bezproblemowo tworzyć 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ąć korzystanie z Aspose.Words dla .NET, zapoznaj się z dostępnymi przewodnikami dla deweloperów oraz przykładowym kodem na GitHubie. Wtyczka Aspose oferuje również zaawansowane funkcje do generowania raportów.

Wypróbuj Aspose.Words dla .NET za darmo

Możesz uzyskać tymczasową licencję na wypróbowanie Aspose.Words dla .NET bez ograniczeń. Zdobądź swoją tymczasową licencję teraz.

Zobacz także