Brevfletning er en funktion i Microsoft Word til hurtigt og nemt at oprette dokumenter som breve, etiketter og konvolutter. Aspose.Words Cloud tager standard brevfletning og avancerer den mange skridt frem, og gør den til en fuldgyldig rapporteringsløsning, der giver dig mulighed for at generere endnu mere komplekse dokumenter såsom rapporter, kataloger, opgørelser og fakturaer. Fordelene ved Aspose.Words Cloud-rapporteringsløsningen er:

  • Design rapporter i Microsoft Word ved hjælp af standard brevfletningsfelter
  • Definer områder i dokumentet, der vokser, såsom detaljerede rækker af en ordre
  • Indsæt billeder under brevfletning
  • Indsæt HTML under brevfletning

Grundlæggende trin

Trin til at udføre en brevfletning er ret nemme. Først bruger du Microsoft Word til at oprette og designe et Word-dokument, normalt kaldet en skabelon. Bemærk, at dokumentet ikke behøver at være en Microsoft Word-skabelon (.dot), det kan være et normalt .doc-dokument. Du indsætter nogle specielle felter kaldet flettefelter i skabelonen på steder, hvor du ønsker, at data fra din datakilde senere skal indsættes. Så med Aspose.Words REST API, udfører du en brevfletningsoperation. Brevfletningen vil tage data fra din datakilde og flette dem ind i dokumentet.

Du kan også udpege gentagelige fletteområder i dokumentet eller indsætte specielle flettefelter, der giver dig mulighed for at indsætte andet indhold, såsom billeder. Afhængigt af hvordan du opsætter brevfletningsfelter og gentagelige områder inde i dokumentet, vil dokumentet vokse til at rumme flere poster i din datakilde. Hvis du ikke bruger brevfletningsområder, vil brevfletningen ligne Microsoft Word brevfletning, og hele dokumentindholdet vil blive gentaget for hver post i datakilden. Ved at bruge gentagelige brevfletningsområder kan du udpege dele inde i et dokument, som vil blive gentaget for hver post i datakilden. Hvis du f.eks. markerer en tabelrække som et område, der kan gentages, vil denne tabelrække blive gentaget, hvilket får tabellen til at vokse dynamisk, så den kan rumme alle dine data.

Forbered et dokument

Før du udfører en brevfletning, skal du forberede dokumentskabelonen. Du bør indsætte flettefelter, der vil blive erstattet med værdier fra din datakilde.

Indsættelse af flettefelter i et dokument

Sådan indsætter du flettefelter i et dokument:

  1. Åbn dit dokument i Microsoft Word.
  2. Klik på det sted, hvor du vil placere et flettefelt i dokumentet.
  3. Åbn menuen Indsæt, og vælg Felt for at åbne dialogboksen Felt.
  4. Vælg MergeField fra listen Feltnavne.
  5. Indtast et navn til flettefeltet i tekstfeltet Feltnavn, og tryk på OK.

Da et flettefelt er et almindeligt Microsoft Word-felt, kan du skifte mellem at vise feltkoder og resultater i dit dokument i Microsoft Word ved hjælp af tastaturgenvejen Alt+F9. Feltkoder vises mellem krøllede seler.

Simpel brevfletning

For at forberede din skabelon til at udføre en simpel brevfletning (uden regioner, svarende til den klassiske brevfletning, der er tilgængelig i Microsoft Word), skal du blot indsætte et eller flere fletningsfelter på de steder, hvor du ønsker at blive udfyldt med data fra datakilden .

Lad os tage et kig på middagsinvitationsdemoen. Det opretter et bogstav for en liste over klienter, der er defineret i datakilden. Skabelonen indeholder et antal flettefelter, der er udfyldt fra to datakilder; med andre ord udføres to brevfletninger efter hinanden. Først flettes data fra den første datakilde ind i skabelonen. Denne datakilde indeholder kun én række, fordi dette er information om den inviterede, så hele dokumentindholdet gentages ikke, og kun de relevante felter er udfyldt med data. Derefter udføres den anden brevfletningsoperation. Den datakilde, den bruger, indeholder oplysninger om klienterne. Hele skabelonen gentages for hver datarække, og hver gentaget kopi udfyldes med den tilsvarende klients data.

brevfletning

Som et resultat har vi et dokument, der består af fem udfyldte, komplette og personlige invitationsbreve (et fragment af det allerførste er vist nedenfor):

udføre brevfletning

Som du kan se, er det muligt, og nogle gange nyttigt, at udføre mere end én fletteoperation med den samme skabelon for at tilføje data i trin. Du kan indsætte NEXT-felter i Word-dokumentet for at få brevfletningsmotoren til at vælge den næste post fra datakilden og fortsætte med at flette. Når motoren støder på et NEXT-felt, vælger den bare den næste post i datakilden og fortsætter med at flette uden at kopiere noget indhold. Dette kan bruges ved oprettelse af dokumenter, såsom adresseetiketter.

Koden til at udføre Simple Mail Merge er angivet nedenfor:

// For komplette eksempler og datafiler, gå til 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

// Upload kildedokument til Cloud Storage
PutCreateRequest request = new PutCreateRequest(fileName, File.OpenRead(@"c:\Data\" + fileName), null, null);
storageApi.PutCreate(request);

// Udfør brevfletning første gang
var executeMailMergeRequest = new PostDocumentExecuteMailMergeRequest(fileName, data, folder, destFileName: destFileName, withRegions: false);
var actual = wordsApi.PostDocumentExecuteMailMerge(executeMailMergeRequest);

// Udfør brevfletning anden gang
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);

Brevfletning med regioner

Hvis du vil dynamisk dyrke dele inde i dokumentet, skal du bruge brevfletning med regioner. For at angive et brevfletningsområde i dokumentet skal du indsætte to brevfletningsfelter for at markere begyndelsen og slutningen af brevfletningsområdet. Alt dokumentindhold, der er inkluderet i et brevfletningsområde, vil automatisk blive gentaget for hver post i datakilden.

For at markere begyndelsen af et brevfletningsområde skal du indsætte et MERGEFIELD med navnet TableStart:MyTable, hvor MyTable svarer til tagget eller nøglen i henholdsvis XML eller JSON. For at markere slutningen af brevfletningsområdet skal du indsætte et andet MERGEFIELD med navnet TableEnd:MyTable. Mellem disse markeringsfelter skal du placere flettefelter, der svarer til felterne i din datakilde. Disse flettefelter vil blive udfyldt med data fra den første række af datakilden, derefter vil hele regionen blive gentaget, og de nye felter vil blive udfyldt med data fra den anden række, og så videre.

Følg disse enkle regler, når du markerer en region:

  • TableStart- og TableEnd-felterne skal være inde i den samme sektion i dokumentet
  • Hvis de bruges i en tabel, skal TableStart og TableEnd være inde i den samme række i tabellen
  • Brevfletningsområder kan indlejres inde i hinanden
  • Brevfletningsområder skal være velformede (der er altid et par matchende TableStart og TableEnd med det samme tabelnavn)

Tag et eksempel på varekatalogdemoen. Her er et fragment af en region forberedt til brevfletning:

brevfletning

Bemærk, at begge markeringsfelter TableStart:Item og TableEnd:Item er placeret i den samme række i Word-tabellen. Efter udførelse af brevfletningen er resultatet her:

Simpel brevfletning

Koden til at udføre brevfletning med regioner er angivet nedenfor:

// For komplette eksempler og datafiler, gå til 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

// Upload inputdokument til 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);

Brevfletning ved hjælp af ‘Mostache’ skabelonsyntaks

Denne syntaks giver dig mulighed for at oprette skabeloner til brug med brevfletning, der bruger almindelige tekstmarkører i stedet for flettefelter. Disse markører ser sådan ud: {{ FieldName }}

Objekt.Attribut-syntaks

Du kan nemt flette attributter for felter ved hjælp af følgende syntaks:

  {{ Address.Street }}  

Dette vil flette data fra XML-data, der ser sådan ud:

<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 Blokke

Du kan flette data fra flere poster ved hjælp af foreach tag. Dette svarer til brevfletningsområder med konventionelle fletningsfelter. Du kan indlejre sådanne blokke.

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

Du kan også blande disse felter og placere dem i andre Microsoft Word-felter, såsom IF- eller Formel-felter.

Betinget blok

Du kan bruge brevfletning med IF-sætning ved hjælp af Aspose.Words Cloud. HVIS-blokken udføres kun, hvis det boolske udtryk, der er knyttet til det, er sandt. Syntaksen for IF er vist nedenfor.

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

Koden til at udføre brevfletning ved hjælp af ‘Mostache’ skabelon er angivet nedenfor:

// For komplette eksempler og datafiler, gå venligst til 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");

// Upload inputdokument til 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);

Indsæt HTML under brevfletning

Både executeMailMerge og executeTemplate API’er giver support til at indsætte HTML i et flettefelt. Du skal bare sørge for at undslippe HTML-tegn i datakildestrengen og bruge “format”=“html”-attributten som vist nedenfor:

{     
  "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>"         
      }       
    }     
  }   
}

Følgende kode viser, hvordan du indsætter HTML under brevfletning:

// For komplette eksempler og datafiler, gå venligst til 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";

				// Upload originalt dokument til 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());
			}
		}
	}
}

Indsæt billeder under brevfletning

Du kan også indsætte billeder i et flettefelt. Skaleringsfaktor for billeder kan indstilles ved hjælp af ‘%’, ‘px’ eller ’’ (proportional skalering).Koden til at indsætte billeder under brevfletning er angivet nedenfor:

// For komplette eksempler og datafiler, gå venligst til 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

// Upload inputdokument til 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);

Cloud SDK’er

Selvom ovenstående kode er i .NET, er Aspose.Words Cloud SDK’er tilgængelige på fem forskellige sprog: .NET, Java, Ruby, Python og Node.js. Derfor kan du bekvemt kalde Mail Merge API’er på et hvilket som helst af disse sprog.

Foreslået indlæg: