Введение

Автоматизация создания персонализированных документов — таких как отчеты, письма и счета — может сэкономить вам время и усилия. С помощью 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 для генерации документов. Вот шаги для выполнения 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. Ниже приведен пример шаблона счета, который хорошо подходит для этого сценария.

Шаблон 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>

Следующий пример кода выполняет вложенный mail merge с использованием 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 без ограничений. Получите вашу временную лицензию сейчас.

См. также