Злиття — це функція Microsoft Word для швидкого й легкого створення документів, як-от листів, наклейок і конвертів. Aspose.Words Cloud використовує стандартне злиття листів і просуває його на багато кроків вперед, перетворюючи його на повноцінне рішення для звітності, яке дозволяє створювати ще складніші документи, такі як звіти, каталоги, інвентаризація та рахунки-фактури. Перевагами звітного рішення Aspose.Words Cloud є:

  • Створення звітів у Microsoft Word за допомогою стандартних полів злиття
  • Визначте регіони в документі, які зростають, наприклад рядки деталей замовлення
  • Вставлення зображень під час злиття
  • Вставте HTML під час злиття

Основні кроки

Кроки для виконання злиття листів досить прості. По-перше, ви використовуєте Microsoft Word для створення та дизайну документа Word, який зазвичай називають шаблоном. Зауважте, що документ не обов’язково має бути шаблоном Microsoft Word (.dot), це може бути звичайний документ .doc. Ви вставляєте деякі спеціальні поля, які називаються полями злиття, у шаблон у місцях, куди потрібно пізніше вставити дані з джерела даних. Потім за допомогою Aspose.Words REST API ви виконуєте операцію злиття пошти. Операція злиття візьме дані з вашого джерела даних і об’єднає їх у документ.

Ви також можете призначити повторювані області злиття в документі або вставити спеціальні поля злиття, які дозволяють вставляти інший вміст, наприклад зображення. Залежно від того, як ви налаштували поля злиття та повторювані області всередині документа, документ буде збільшуватися, щоб вмістити кілька записів у вашому джерелі даних. Якщо ви не використовуєте області злиття, злиття буде подібним до злиття Microsoft Word, і весь вміст документа повторюватиметься для кожного запису в джерелі даних. Використовуючи повторювані області злиття, ви можете призначити частини всередині документа, які повторюватимуться для кожного запису в джерелі даних. Наприклад, якщо ви позначаєте рядок таблиці як повторювану область, цей рядок таблиці повторюватиметься, що призведе до динамічного зростання таблиці, щоб вмістити всі ваші дані.

Підготуйте документ

Перш ніж виконувати злиття, потрібно підготувати шаблон документа. Вам слід вставити поля злиття, які буде замінено значеннями з вашого джерела даних.

Вставлення об’єднаних полів у документ

Щоб вставити об’єднані поля в документ:

  1. Відкрийте документ у Microsoft Word.
  2. У документі клацніть там, де потрібно розмістити поле злиття.
  3. Відкрийте меню «Вставка» та виберіть «Поле», щоб відкрити діалогове вікно «Поле».
  4. У списку «Імена полів» виберіть MergeField.
  5. У текстовому полі «Ім’я поля» введіть назву для поля злиття та натисніть «ОК».

Оскільки поле злиття є звичайним полем Microsoft Word, ви можете перемикатися між відображенням кодів полів і результатів у вашому документі в Microsoft Word за допомогою комбінації клавіш Alt+F9. Коди полів відображаються між фігурними дужками.

Просте злиття пошти

Щоб підготувати свій шаблон для виконання простого злиття (без регіонів, подібно до класичного злиття, доступного в Microsoft Word), вам слід просто вставити одне або кілька полів злиття в місцях, які ви хочете заповнити даними з джерела даних. .

Давайте подивимося на демонстрацію Dinner Invitation. Він створює лист для списку клієнтів, визначених у джерелі даних. Шаблон містить ряд полів злиття, які заповнюються з двох джерел даних; іншими словами, два злиття виконуються одне за одним. Спочатку дані з першого джерела даних об’єднуються в шаблон. Це джерело даних містить лише один рядок, оскільки це інформація про запрошеного, тому весь вміст документа не повторюється, а даними заповнюються лише відповідні поля. Потім виконується друга операція злиття. Джерело даних, яке він використовує, містить інформацію про клієнтів. Весь шаблон повторюється для кожного рядка даних, і кожна повторювана копія заповнюється відповідними даними клієнта.

злиття листів

У підсумку маємо документ, який складається з п’яти заповнених, повних та персоніфікованих листів-запрошень (фрагмент самого першого наведено нижче):

виконати злиття пошти

Як бачите, можливо, а іноді й корисно, виконати кілька операцій злиття з одним шаблоном, щоб додавати дані поетапно. Ви можете вставити поля NEXT у документ Word, щоб система злиття вибрала наступний запис із джерела даних і продовжила злиття. Коли механізм зустрічає поле NEXT, він просто вибирає наступний запис у джерелі даних і продовжує об’єднання без копіювання будь-якого вмісту. Це можна використовувати під час створення документів, наприклад наклейок для розсилки.

Код для виконання простого злиття наведено нижче:

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet

string MyAppKey = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/

WordsApi wordsApi = new WordsApi(MyAppKey, MyAppSid);
StorageApi storageApi = new StorageApi(MyAppKey, MyAppSid);

var fileName = "DinnerInvitation.docx";
var destFileName = "InviterAdded.docx";
var data = File.ReadAllText(@"c:\Data\" + "Inviter.xml");
string folder = null; // File exists at the root of the storage

// Завантажте вихідний документ у Cloud Storage
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(@"c:\Data\" + fileName), null, null);
storageApi.PutCreate(request);

// Виконати операцію злиття вперше
var executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: false);
var actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);

// Виконайте операцію злиття вдруге
fileName = destFileName;
destFileName = "FinalDinnerInvitation.docx";
data = File.ReadAllText(@"c:\Data\" + "Clients.xml");

executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: false);
actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);

Злиття пошти з регіонами

Якщо ви хочете динамічно збільшувати частини всередині документа, використовуйте злиття з регіонами. Щоб указати область злиття в документі, потрібно вставити два поля злиття, щоб позначити початок і кінець області злиття. Увесь вміст документа, включений в область злиття, автоматично повторюватиметься для кожного запису в джерелі даних.

Щоб позначити початок області злиття, вставте MERGEFIELD з назвою TableStart:MyTable, де MyTable відповідає тегу або ключу в XML або JSON відповідно. Щоб позначити кінець області злиття, вставте інше MERGEFIELD з назвою TableEnd:MyTable. Між цими полями позначок розмістіть поля злиття, які відповідають полям вашого джерела даних. Ці поля злиття будуть заповнені даними з першого рядка джерела даних, потім уся область буде повторена, а нові поля будуть заповнені даними з другого рядка тощо.

Під час позначення регіону дотримуйтесь цих простих правил:

  • Поля TableStart і TableEnd мають бути в одному розділі документа
  • Якщо використовується всередині таблиці, TableStart і TableEnd мають бути в одному рядку таблиці
  • Регіони злиття можна вкладати одна в одну
  • Регіони злиття мають бути добре сформованими (завжди є пара відповідних таблиць TableStart і TableEnd з однаковою назвою таблиці)

Як приклад, подивіться на демонстрацію Item Catalog. Ось фрагмент регіону, підготовленого для злиття:

злиття листів

Зауважте, що обидва поля маркування TableStart:Item і TableEnd:Item розміщуються в одному рядку таблиці Word. Після виконання злиття ось результат:

Просте злиття листів

Нижче наведено код для виконання злиття пошти з регіонами:

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet

string MyAppKey = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/

WordsApi wordsApi = new WordsApi(MyAppKey, MyAppSid);
StorageApi storageApi = new StorageApi(MyAppKey, MyAppSid);

var fileName = "Invoice_Template.doc";
var destFileName = "Invoice_Template_out_.doc";
var data = File.ReadAllText(@"c:\Data\" + "CustomerData.xml");
string folder = null; // File exists at the root of the storage

// Завантажте вхідний документ у Cloud Storage
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(@"c:\Data\" + fileName), null, null);
storageApi.PutCreate(request);

var executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: true);
var actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);

Злиття з використанням синтаксису шаблону «Mustache».

Цей синтаксис дозволяє створювати шаблони для використання зі злиттям, які використовують маркери звичайного тексту замість полів злиття. Ці маркери виглядають так: {{ FieldName }}

Синтаксис Object.Attribute

Ви можете легко об’єднати атрибути полів за допомогою такого синтаксису:

  {{ Address.Street }}  

Це об’єднає дані з даних XML, які виглядають так:

<Order> // <-- Current context is here.  
  <Number>23</Number>  
  <Address>  
    <Street>Nelson Street</Street>  
    <Suburb>Howick</Suburb>  
    <City>Auckland</City>  
  </Address>  
  <PhoneNumber>543 1234</PhoneNumber>  
</Order>  

Foreach Блоки

Ви можете об’єднати дані з кількох записів за допомогою тегу foreach. Це схоже на регіони злиття зі звичайними полями злиття. Ви можете вкладати такі блоки.

{{ #foreach Order }}  
  {{ Number }}  
    {{ Address.Street }}  
      {{ #foreach Item }}  
        {{ Description }} {{ Cost}} {{ Total }}  
      {{/foreach Item }}  
{{ /foreach Order }} 

Ви також можете змішувати ці поля та розміщувати їх усередині інших полів Microsoft Word, наприклад полів IF або формул.

Умовний блок

Ви можете використовувати злиття з оператором IF за допомогою Aspose.Words Cloud. Блок IF виконується, лише якщо логічний вираз, пов’язаний з ним, є істинним. Синтаксис IF наведено нижче.

{ IF "{{ GENDER }}" = “MALE” “true text” “false text” }

Нижче наведено код для виконання злиття пошти за допомогою шаблону «Mustache»:

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet

string MyAppKey = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/

WordsApi wordsApi = new WordsApi(MyAppKey, MyAppSid);
StorageApi storageApi = new StorageApi(MyAppKey, MyAppSid);

var fileName = "VendorTemplate.doc";
var destFileName = "VendorTemplate_Out.docx";
string folder = null; // File exists at the root of the storage

var data = File.ReadAllText(@"c:\Data\" + "Vendors.xml");

// Завантажте вхідний документ у Cloud Storage
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(@"c:\Data\" + fileName), null, null);
storageApi.PutCreate(request);

var postExecuteTemplateRequest = new PostExecuteTemplateRequest(fileName, data, folder, destFileName: destFileName);
var actual = wordsApi.PostExecuteTemplate(postExecuteTemplateRequest);

Вставити HTML під час злиття

Обидва API executeMailMerge і executeTemplate підтримують вставку HTML у поле злиття. Вам просто потрібно переконатися, що ви екрануєте символи HTML у рядку джерела даних і використовуєте атрибут “format”=“html”, як показано нижче:

{     
  "dataSourceList": {   
    "contractDS": {  
      "contractDescription": {  
        "format":"html",   
        "htmlText": "<b>Test me 1<br><br><i>Test me 2<br><br><u>Test me 2</u></i></b><br>"         
      }       
    }     
  }   
}

Наступний код показує, як вставити HTML під час злиття:

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet

using System;
using System.IO;
using Aspose.Words.Cloud.Sdk;
using Aspose.Words.Cloud.Sdk.Model;
using Aspose.Words.Cloud.Sdk.Model.Requests;

namespace Aspose.Words.Cloud.Examples.CSharp
{
	public class PopulateMailMergeTemplateWithHTMLData
	{
		public static void Run()
		{
			WordsApi wordsApi = new WordsApi(Constants.AppKey, Constants.AppSID);

			try
			{
				string fileName = "template.doc";
				string destName = "Out_PostDocumentExecuteMailMergeWithHTMLData.docx";

				// Завантажте оригінальний документ у Cloud Storage
				wordsApi.UploadFile(new UploadFileRequest(File.Open("..\\..\\..\\Resources\\" + fileName, FileMode.Open), fileName, Constants.MYStorage));

				string data = File.ReadAllText("..\\..\\..\\Resources\\TestPostDocumentExecuteMailMerge.txt", System.Text.Encoding.UTF8);
				ExecuteMailMergeRequest request = new ExecuteMailMergeRequest(fileName, data, null, Constants.MYStorage, null, null, null, null, null, null, destName);
				DocumentResponse result = wordsApi.ExecuteMailMerge(request);

			}
			catch (Exception e)
			{
				Console.WriteLine(e.ToString());
			}
		}
	}
}

Вставлення зображень під час злиття

Ви також можете вставляти зображення в поле злиття. Масштабний коефіцієнт для зображень можна встановити за допомогою «%», «px» або ’’ (пропорційне масштабування).Код для вставки зображень під час злиття наведено нижче:

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-words-cloud/aspose-words-cloud-dotnet

string MyAppKey = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/
string MyAppSid = ""; // Get AppKey and AppSID from https://dashboard.aspose.cloud/

WordsApi wordsApi = new WordsApi(MyAppKey, MyAppSid);
StorageApi storageApi = new StorageApi(MyAppKey, MyAppSid);

var fileName = "TestMailMergeWithImages.doc";
var destFileName = "TestMailMergeWithImages_Out.docx";
var data = File.ReadAllText(WordsExamples.PathToDataFiles + @"\DocumentActions\MailMerge\" + "MailMergeData.txt");
string folder = null; // File exists at the root of the storage

// Завантажте вхідний документ у Cloud Storage
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(WordsExamples.PathToDataFiles + @"\DocumentActions\MailMerge\" + fileName), null, null);
storageApi.PutCreate(request);

var executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: false);
var actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);

Хмарні SDK

Хоча наведений вище код є у .NET, Aspose.Words Cloud SDKs доступні п’ятьма різними мовами: .NET, Java, Ruby, Python і Node.js. Тому ви можете зручно викликати API злиття будь-якою з цих мов.

Рекомендована публікація: