Расширенные функции Mail Merge
Aspose.Words предоставляет некоторые дополнительные Mail Merge свойства и методы, которые позволяют выполнять дальнейшую настройку процесса Mail Merge либо в виде простого Mail Merge, либо Mail Merge с регионами.
Расширенные функции Mail Merge включают, но не ограничиваются ими, получение информации о структуре шаблона перед выполнением операции Mail Merge, настройку правил для операции Mail Merge и очистку во время операции Mail Merge. В этой статье мы рассмотрим лишь несколько свойств и примеров, которые покажут вам, как использовать расширенные функции.
Установите правила для операций Mail Merge
Добавление правил в шаблон позволяет сделать рабочий процесс более эффективным и гибким. Используя правила Mail Merge, вы можете настроить содержимое, которое можно быстро изменять, и избежать необходимости создавать несколько документов.
Aspose.Words позволяет настроить Mail Merge на основе правил, которые запускаются при выполнении операции Mail Merge и управлении информацией о слиянии. Например, когда вы создаете электронное сообщение или переписку для отправки всем своим клиентам. Вы можете настроить правило таким образом, чтобы письмо могло содержать различные данные, основанные на различных значениях в определенных полях вашего источника данных.
Взгляните на некоторые правила Mail Merge, которые вы можете реализовать.
Реализуйте следующее поле для объединения записей данных в текущем документе
Вы можете использовать поле Next для объединения следующей записи данных в текущий результирующий объединенный документ, вместо того чтобы создавать новый объединенный документ. Оно используется для отображения нескольких записей в одном документе.
Реализуйте поля NextIf и SkipIf для сравнения двух выражений
Вы можете использовать поле NextIf или поле SkipIf, если хотите сравнить два выражения (выражения right и left) с некоторым значением operator.
NextIf
Field Name | Comparison Result “True” | Comparison Result “False” |
---|---|---|
NextIf |
Aspose.Words приведет к объединению следующей записи данных с текущим документом слияния, и все поля слияния в шаблоне, которые находятся после поля NextIf, будут заменены значениями из следующей записи данных, а не из текущей записи данных. | Aspose.Words приведет к объединению следующей записи данных в новый объединяемый документ. |
SkipIf |
Aspose.Words отменит текущий объединяемый документ, перейдет к следующей записи данных в источнике данных и запустит новый объединяемый документ. | Aspose.Words продолжит работу с текущим объединяемым документом. |
В следующем примере кода показано, как сравнить два выражения с NextIf или SkipIf:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
// Use NextIf field. A NEXTIF field has the same function as a NEXT field, | |
// but it skips to the next row only if a statement constructed by the following 3 properties is true. | |
FieldNextIf fieldNextIf = (FieldNextIf)builder.InsertField(FieldType.FieldNextIf, true); | |
// Or use SkipIf field. | |
FieldSkipIf fieldSkipIf = (FieldSkipIf)builder.InsertField(FieldType.FieldSkipIf, true); | |
fieldNextIf.LeftExpression = "5"; | |
fieldNextIf.RightExpression = "2 + 3"; | |
fieldNextIf.ComparisonOperator = "="; | |
doc.Save(ArtifactsDir + "WorkingWithFields.FieldNext.docx"); |
Получить Информацию о Структуре Шаблона
Aspose.Words позволяет вам собирать различную информацию в вашем шаблоне различными способами. Например, вам может потребоваться получить названия некоторых полей слияния или иерархию регионов в вашем шаблоне. Теперь мы объясним возможные варианты получения некоторой конкретной информации из вашего шаблона.
Получение имен полей слияния
Вы можете столкнуться со сценарием, когда вам захочется объединить данные с полями слияния, созданными другими пользователями, и в этом случае вы не будете уверены в точных названиях полей слияния. Итак, для достижения цели Mail Merge, во-первых, вам нужно будет прочитать и отобразить названия всех полей слияния. Aspose.Words позволяет получить коллекцию имен полей слияния, используя метод GetFieldNames.
В следующем примере кода показано, как получить имена всех полей слияния в шаблоне:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Document doc = new Document(); | |
string[] fieldNames = doc.MailMerge.GetFieldNames(); |
Получите информацию о Регионах Слияния
Возможно, у вас есть сценарий, в котором вы хотите понять, как структурирован ваш шаблон с помощью указанных областей слияния. Вы можете использовать некоторые методы для сбора всей необходимой информации о регионах слияния или для получения иерархии областей слияния в вашем шаблоне, например, метод GetRegionsHierarchy. Вы можете использовать свойства и методы класса MailMergeRegionInfo.В следующем примере кода показано, как получить иерархию областей слияния:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
MailMergeRegionInfo regionInfo = doc.MailMerge.GetRegionsHierarchy(); |
В следующем примере кода показано, как получить определенные области слияния внутри вашего шаблона на основе их названий:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Document doc = new Document(MyDir + "Mail merge regions.docx"); | |
MailMergeRegionInfo regionInfo = doc.MailMerge.GetRegionsHierarchy(); | |
IList<MailMergeRegionInfo> regions = doc.MailMerge.GetRegionsByName("Region1"); | |
Assert.AreEqual(1, doc.MailMerge.GetRegionsByName("Region1").Count); | |
foreach (MailMergeRegionInfo region in regions) Assert.AreEqual("Region1", region.Name); | |
regions = doc.MailMerge.GetRegionsByName("Region2"); | |
Assert.AreEqual(1, doc.MailMerge.GetRegionsByName("Region2").Count); | |
foreach (MailMergeRegionInfo region in regions) Assert.AreEqual("Region2", region.Name); | |
regions = doc.MailMerge.GetRegionsByName("NestedRegion1"); | |
Assert.AreEqual(2, doc.MailMerge.GetRegionsByName("NestedRegion1").Count); | |
foreach (MailMergeRegionInfo region in regions) Assert.AreEqual("NestedRegion1", region.Name); |
Добавление сопоставленных полей
Aspose.Words позволяет автоматически сопоставлять названия полей в вашем источнике данных и названия полей Mail Merge в шаблоне, используя свойство MappedDataFields. Например, если в вашем шаблоне есть имя поля под названием “Фамилия”, а в вашем источнике данных есть имя поля “Фамилия” или другой вариант, например “Last_Name” или “LastName”, то поле в источнике данных автоматически преобразуется в соответствующее сопоставленное поле. Если шаблон слияния должен быть объединен со многими источниками данных, сопоставленные поля не требуют повторного ввода полей в шаблон для согласования с именами полей в базе данных.
В следующем примере кода показано, как добавить сопоставленное поле с помощью метода Add, когда объединяемое поле в шаблоне и поле данных в источнике данных имеют разные имена:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git. | |
Document doc = new Document(); | |
doc.MailMerge.MappedDataFields.Add("MyFieldName_InDocument", "MyFieldName_InDataSource"); |