Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
В някои сценарии може да се наложи да използвате вложени Mail Merge С региони. Вложено обединяване е функция, която ви позволява да обедините йерархични данни от вашия източник на данни във вашия шаблон за обединяване, за да попълните лесно вашия документ. По принцип йерархичните данни се представят като набор от елементи от данни, а йерархичните зависимости описват как елементите от данни са свързани помежду си (един елемент от данни е родител на друг).
Aspose.Words Позволява ви да извършвате операция Mail Merge с вложени региони. Можете да използвате тази функция, ако имате източник на данни, който е организиран в дървовидна структура и искате да изпълните операция Mail Merge, за да попълните шаблон с йерархични данни.
Областта Mail Merge се нарича вложена, ако имате две или повече Mail Merge региони, където един от тях е вътре в другия в йерархична форма. Имайте предвид, че всеки регион съдържа данни от една таблица.
Най-често срещаният пример за вложено Mail Merge е поръчка, която съдържа множество елементи, където трябва да свържете няколко таблици с данни и да представите информацията в шаблон.
Снимката по-долу показва два вложени региона, където регионът Order Mail Merge е родител на региона Item Mail Merge.
Данните, които трябва да бъдат обединени в шаблон, могат да идват от различни източници, главно релационни бази данни или XML документи. В нашия пример ще използваме файл XML, За да съхраняваме данните си и да ги зареждаме директно в DataSet.
Aspose.Words ви позволява да обработвате Mail Merge с вложени региони, като използвате релациите от данни, посочени в DataSet. Когато обектът DataSet зареди XML, той или използва предоставената схема, или я извежда от структурата на самия XML, за да постигне това. От тази структура тя създава релации между таблиците, където е необходимо.
Изображението по-долу показва как данните от таблицата Order, предадени на вложените региони за обединяване, ще бъдат свързани с таблицата Item, както и изхода, генериран по време на операцията за обединяване.
Както можете да видите от изходния документ, всяка поръчка от таблицата Order се вмъква в шаблона за обединяване с всички свързани с поръчката елементи от таблицата Item. Следващата поръчка ще бъде вмъкната заедно с техните артикули, докато не бъдат изброени всички поръчки и артикули. Редът на влагане Mail Merge С региони в шаблона трябва да съответства на релациите от данни между таблиците в източника на данни.
Следващият пример за код показва как да генерирате фактура, използвайки вложени Mail Merge С региони:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// Create the Dataset and read the XML. | |
DataSet pizzaDs = new DataSet(); | |
// The Datatable.TableNames and the DataSet.Relations are defined implicitly by .NET through ReadXml. | |
pizzaDs.readXml(dataDir + "CustomerData.xml"); | |
String fileName = "Invoice Template.doc"; | |
// Open the template document. | |
Document doc = new Document(dataDir + fileName); | |
// Trim trailing and leading whitespaces mail merge values. | |
doc.getMailMerge().setTrimWhitespaces(false); | |
// Execute the nested mail merge with regions. | |
doc.getMailMerge().executeWithRegions(pizzaDs); | |
// Save the output to file. | |
doc.save(dataDir + fileName); |
Трябва да настроите всички релации на данни в структурата родител-дете, за да изпълните вложеното Mail Merge С региони правилно. Пропускането на тази важна стъпка може да доведе до неуспех при изпълнението на вложеното Mail Merge С региони.
При извличане на данни за вложен Mail Merge от файл XML с помощта на метода ReadXml, релациите се създават автоматично в съответствие със структурата на документа XML. Трябва обаче да се уверите, че са създадени правилни отношения.
Ако Mail Merge не работи според очакванията, тогава може да се наложи да преструктурирате файла XML или изрично да създадете релации между DataTable обекти в DataSet.
А DataSet
, който има свързани таблици с данни, ще използва обекта DataRelation, за да представи Релацията родител-дете между таблиците.
Следният пример за код показва как да се установи DataRelation
между таблица на клиент и таблица на поръчка с помощта на обект DataRelation
:
dataSet.getRelations().add(new DataRelation("OrderToItem", orderTable.getColumns().get("Order_Id"), itemTable.getColumns().get("Order_Id"), false));
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.