Automating the creation of personalized documents—such as reports, letters, and invoices—can significantly enhance efficiency in your workflow. With C# Mail Merge powered by Aspose.Words for .NET, you can achieve this seamlessly. This guide will walk you through using the Aspose.Words Mail Merge Plugin to perform efficient and scalable document generation within your .NET applications—without the need for MS Word or Office Interop. By the end of this guide, you will be equipped to integrate C# mail merge for report automation and streamline your reporting workflow.
Содержание
- Что такое слияние почты?
- Источники данных для слияния почты
- Подготовка шаблонов для слияния почты
- Начало работы с Aspose.Words для .NET
- Выполнение слияния почты с образцовыми данными
- Слияние почты с данными XML
- Пользовательское форматирование полей слияния
- Слияние почты с регионами
- Вложенное слияние почты
- Заключение
Что такое слияние почты?
Слияние почты — это мощная методология для динамической генерации документов путем заполнения шаблонов данными из различных источников. С помощью Aspose.Words вы можете автоматизировать такие задачи, как:
- Генерация персонализированных писем и счетов.
- Создание массовых отчетов с использованием структурированных форматов, таких как XML, JSON или базы данных, что позволяет осуществлять динамическую генерацию отчетов с C# и Aspose.Words.
Источники данных для слияния почты
Aspose.Words поддерживает различные источники данных, включая:
- Объекты: Заполнение шаблонов с использованием экземпляров классов.
- XML: Загрузка структурированных данных для динамических полей.
- JSON: Легкая интеграция с современными API.
- CSV: Использование табличных данных для массовой генерации документов.
- DataTable/DataSet: Использование ADO.NET для интеграции с базами данных.
Подготовка шаблона для слияния почты
Шаблон слияния почты — это документ, содержащий поля слияния, которые будут заполнены данными из указанного вами источника данных во время выполнения. Шаблон может быть в формате DOC или DOCX и не требует определенного стиля. Следуйте этим шагам, чтобы создать шаблон слияния почты:
- Откройте ваш документ или создайте новый в MS Word.
- Поместите курсор в то место, где вы хотите вставить поле слияния.
- В меню Вставка выберите опцию Поле.
- В списке Имена полей выберите MergeField.
- Укажите имя для поля слияния в поле Имя поля и нажмите ОК.
- Сохраните документ.
Следующий скриншот иллюстрирует образец шаблона документа.

.NET Mail Merge API - Установка
Вы можете установить Aspose.Words для .NET различными способами:
Выполнение слияния почты в документе Word с использованием C#
Как только ваш шаблон готов, вы можете выполнить слияние почты для генерации документов. Вот шаги для выполнения слияния почты на вашем подготовленном шаблоне:
- Загрузите шаблон документа с помощью класса Document.
- Установите необходимые параметры слияния почты, такие как Document.MailMerge.TrimWhitespaces.
- Выполните слияние почты с помощью метода Document.MailMerge.Execute(), передав источник данных в качестве параметра.
- Сохраните сгенерированный документ с помощью метода Document.Save(String).
Вот образец кода, демонстрирующий, как автоматизировать генерацию отчетов в C# с использованием массива значений:
Документ Word после слияния почты

Выполнение слияния почты с использованием источника данных XML в C#
XML-файлы часто используются для хранения и передачи данных. Aspose.Words для .NET поддерживает XML в качестве источника данных для операций слияния почты. Просто прочитайте XML в объект DataSet и выполните слияние почты. Ниже представлен образец 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 и выполняет слияние почты с использованием C#.
Ниже представлен шаблон слияния почты шаблон, который будет заполнен данными из XML-файла.

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

Пользовательское форматирование полей слияния
Aspose.Words для .NET предоставляет расширенный контроль над процессом слияния почты. Свойство MailMerge.FieldMergingCallback позволяет вам настраивать поведение слияния почты при встрече с каждым полем слияния. Реализация методов IFieldMergingCallback.FieldMerging и IFieldMergingCallback.ImageFieldMerging позволяет настраивать операцию слияния почты.
Ниже представлен образец кода, демонстрирующий, как применить пользовательское форматирование во время слияния почты через предоставленный пример шаблона:
Следующий реализует класс HandleMergeFieldAlternatingRows.
Слияние почты с регионами с использованием C#
В некоторых случаях вам может потребоваться заполнить и повторить определенный регион в документе Word. Для таких сценариев используйте слияние почты с регионами. Чтобы создать регион, укажите как начало, так и конец региона; слияние почты затем будет повторять этот регион для каждой записи в источнике данных. Пример шаблона ниже содержит два региона — Заказы и Подробности заказа — с использованием полей слияния «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails» и «TableEnd:OrderDetails».

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

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

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