Введение

Сэкономьте время и усилия, автоматизировав создание персонализированных документов, таких как отчеты, письма и счета, с помощью C# Mail Merge, поддерживаемого Aspose.Words для .NET. Этот гид объясняет, как использовать Плагин Mail Merge Aspose.Words для эффективной и масштабируемой генерации документов в ваших .NET приложениях — без необходимости использовать MS Word или Office Interop. Вы научитесь интегрировать C# mail merge для автоматизации отчетов, что позволит вам оптимизировать ваш рабочий процесс отчетности.


Содержание:


Что такое Mail Merge?

Mail Merge — это методология для динамической генерации документов путем заполнения шаблонов данными из различных источников. С помощью Aspose.Words вы можете без проблем автоматизировать такие задачи, как:

  • Генерация писем и счетов с персональными данными.
  • Создание массовых отчетов, используя данные из структурированных форматов, таких как XML, JSON или базы данных, позволяя динамическую генерацию отчетов с C# и Aspose.Words.

Источник данных для Mail Merge

Aspose.Words поддерживает различные источники данных:

  • Объекты: Заполнение шаблонов с использованием экземпляров классов.
  • XML: Загрузка структурированных данных для динамических полей.
  • JSON: Легкая интеграция с современными API.
  • CSV: Использование табличных данных для массовой генерации документов.
  • DataTable/DataSet: Использование ADO.NET для интеграции с базами данных.

Подготовка шаблона для Mail Merge

Шаблон mail merge — это документ, содержащий поля слияния, которые будут заполнены данными из вашего указанного источника данных во время выполнения. Шаблон может быть в формате DOC или DOCX; не требуется наличие определенного стиля шаблона. Следуйте этим шагам, чтобы создать шаблон mail merge:

  1. Откройте ваш документ или создайте новый в MS Word.
  2. Поместите курсор туда, где вы хотите вставить поле слияния.
  3. В меню Вставка выберите опцию Поле.
  4. В списке Имена полей выберите MergeField.
  5. Укажите имя для поля слияния в поле Имя поля и нажмите ОК.
  6. Сохраните документ.

Следующий скриншот иллюстрирует образец шаблона документа.

Шаблон Mail Merge

.NET Mail Merge API - Установка

Вы можете установить Aspose.Words для .NET различными способами:

Выполнение Mail Merge в документе Word с использованием C#

Как только ваш шаблон готов, выполните слияние для генерации документов. Вот шаги для выполнения mail merge на вашем подготавливаемом шаблоне:

  1. Загрузите шаблон документа с помощью класса Document.
  2. Установите необходимые параметры mail merge, такие как Document.MailMerge.TrimWhitespaces.
  3. Выполните mail merge, используя метод Document.MailMerge.Execute(), передавая источник данных в качестве параметра.
  4. Сохраните сгенерированный документ с помощью метода Document.Save(String).

Вот пример кода, демонстрирующий, как автоматизировать генерацию отчетов в C# с помощью массива значений:


Документ Word после Mail Merge

Выполнение Mail Merge в C#

Выполнение Mail Merge с использованием источника данных XML в C#

XML файлы часто используются для хранения и передачи данных. Aspose.Words для .NET также поддерживает XML в качестве источника данных для операций mail merge. Просто загрузите XML в объект DataSet и выполните mail merge. Вот пример XML файла для нашего случая.

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

Следующий пример кода извлекает данные из источника данных XML и выполняет mail merge с использованием C#.

Ниже представлен шаблон mail merge, который будет заполнен данными из XML файла.

Шаблон Mail Merge для XML

Это изображение представляет собой первую страницу результирующего документа Word, полученного после выполнения mail merge.

Выполнение Mail Merge с XML в C#

Пользовательское форматирование полей слияния

Aspose.Words для .NET предоставляет улучшенный контроль над процессом mail merge. Свойство MailMerge.FieldMergingCallback позволяет настроить поведение mail merge, когда каждое поле слияния встречается. Реализация методов IFieldMergingCallback.FieldMerging и IFieldMergingCallback.ImageFieldMerging позволяет настраивать операции mail merge.

Ниже приведен пример кода, демонстрирующий, как применить пользовательское форматирование во время mail merge с помощью предоставленного примерного шаблона:

Следующий код реализует класс HandleMergeFieldAlternatingRows.

Mail Merge с регионами с использованием C#

В некоторых случаях вам может понадобиться заполнить и повторить определенный регион в документе Word. Для таких случаев используйте mail merge с регионами. Чтобы создать регион, укажите как начало, так и конец региона; затем mail merge будет повторять этот регион для каждой записи в источнике данных. Пример шаблона ниже содержит два региона — Заказы и Подробности заказа — с использованием полей слияния «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails» и «TableEnd:OrderDetails».

Mail Merge с регионами

Вот пример кода, выполняющего mail merge на основе регионов для ранее упомянутого шаблона.

Следующие методы показывают, как извлекать данные из базы данных.

Вложенные регионы Mail Merge

Часто данные из источника структурированы в реляционных форматах. Например, “Заказы” могут иметь отношение один-ко-многим с “Подробностями заказа”, которые хранят записи о товарах в заказе. В таких сценариях используйте вложенное слияние. Ниже приведен пример шаблона инвойса, который подходит для этого сценария.

Шаблон Mail Merge с регионами

Ниже находится XML источник данных для нашего примера вложенного 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>

Соответствующий файл OrderSchema.xsd для этого XML:

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

Следующий пример кода выполняет вложенное слияние с использованием C#.

Документ Word после Mail Merge

Ниже представлена первая страница результирующего документа Word, полученного после выполнения вложенного mail merge.

Документ Word после Mail Merge

Заключение

Aspose.Words для .NET — это всеобъемлющий API для mail merge, который предоставляет как стандартные, так и расширенные функции, пригодные для .NET приложений. С помощью всего лишь нескольких строк кода вы можете разрабатывать простые или сложные отчеты из различных источников данных без проблем. Для получения рекомендаций по наилучшим практикам автоматической генерации отчетов в .NET обращайтесь к документации. Чтобы начать с Aspose.Words для .NET, изучите доступные руководства разработчиков и образцы кода на GitHub. Также Плагин Aspose предлагает расширенные функции для генерации отчетов.

Попробуйте Aspose.Words для .NET бесплатно

Вы можете получить бесплатную временную лицензию, чтобы попробовать Aspose.Words для .NET без ограничений. Получите свою временную лицензию сейчас.

См. также