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.