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

В некоторых случаях вам может потребоваться использовать вложенные mail merge области. Вложенное слияние - это функция, которая позволяет объединять иерархические данные из вашего источника данных в шаблон слияния для упрощения заполнения вашего документа. По сути, иерархические данные представлены в виде набора элементов данных, а иерархические связи описывают, как элементы данных связаны друг с другом (один элемент данных является родительским для другого).

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

Что такое вложенный Mail Merge

Область mail merge называется вложенной, если у вас есть две или более области mail merge, одна из которых находится внутри другой в иерархической форме. Обратите внимание, что каждая область содержит данные из одной таблицы.

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

На рисунке ниже показаны две вложенные области, где область Order mail merge является родительской для области Item mail merge.

nested_mail_merge_with_regions

Как обработать Mail Merge с вложенными областями

Данные, которые будут объединены в шаблон, могут быть получены из различных источников, в основном из реляционных баз данных или документов XML. В нашем примере мы будем использовать SQLite база данных для хранения наших данных и загрузки их с помощью пользовательской реализации источника данных.

На рисунке ниже показано, как данные из таблицы Order, передаваемые во вложенные области слияния, будут связаны с таблицей Item, а также выходные данные, сгенерированные во время операции слияния.

mail_merge_with_nested_regions

Как вы можете видеть из выходного документа, каждый заказ из таблицы Order вставляется в шаблон объединения со всеми связанными с заказом позициями из таблицы Item. Следующий заказ будет вставляться вместе со своими позициями до тех пор, пока не будут перечислены все заказы и позиции. Порядок вложения mail merge регионов в шаблон должен соответствовать соотношениям данных между таблицами в источнике данных.

Как создать связи с данными из пользовательского источника данных

Реализуйте интерфейс IMailMergeDataSource для создания связей в структуре “родитель-потомок” вашего пользовательского источника данных. Используйте метод GetChildDataSource, чтобы вернуть соответствующие дочерние данные текущей родительской записи.

В следующем примере кода показано, как сгенерировать счет-фактуру, используя вложенные mail merge области из SQLite база данных с SQLiteCpp: