Tipes Mail Merge Operasie

Die hoofgedagte van Mail Merge is om outomaties’n dokument of verskeie dokumente te skep gebaseer op jou sjabloon en data wat van jou databron afgelei is. Aspose.Words laat jou toe om twee verskillende tipes Mail Merge operasies uit te voer: eenvoudige Mail Merge en Mail Merge met streke.

Die mees algemene voorbeeld van die gebruik van simple Mail Merge is wanneer jy’n dokument vir verskillende kliënte wil stuur deur hul name aan die begin van die dokument in te sluit. Om dit te doen, moet jy samesmeltingsvelde soos First Name en Last Name in jou sjabloon skep, en dit dan invul met data van jou databron. Terwyl die mees algemene voorbeeld van die gebruik van Mail Merge met streke is wanneer jy wil’n dokument wat spesifieke bestellings met die lys van alle items binne elke bestelling sluit stuur. Om dit te doen, sal jy nodig het om saam te smelt streke te skep binne jou sjabloon – eie streek vir elke bestelling, ten einde dit te vul met al die vereiste data vir die items.

Die belangrikste verskil tussen beide samesmelting operasies is dat eenvoudige Mail Merge (sonder streke) herhaal die hele dokument per elke data bron rekord, terwyl Mail Merge met streke herhaal slegs aangewese streke per rekord. Jy kan dink aan’n eenvoudige Mail Merge operasie as’n spesifieke geval van samesmelting met streke waar die enigste streek is die hele dokument.

Eenvoudige Mail Merge Operasie

‘n eenvoudige Mail Merge word gebruik om die Mail Merge velde binne jou sjabloon te vul met die vereiste data van jou databron (enkel tabel verteenwoordiging). So dit is soortgelyk aan die klassieke Mail Merge in Microsoft Word.

U kan een of meer samesmeltingsvelde in u sjabloon byvoeg en dan die eenvoudige Mail Merge - bewerking uitvoer. Dit word aanbeveel om dit te gebruik as u sjabloon geen samesmeltingsgebiede bevat nie.

Die belangrikste beperking van die gebruik van hierdie tipe is dat die hele dokumentinhoud vir elke rekord in die databron herhaal sal word.

Hoe Om’n Eenvoudige Mail Merge Operasie {#how-to-execute-a-simple-mail-merge-operation}Uit Te Voer

Sodra u sjabloon gereed is, kan u die eenvoudige Mail Merge - bewerking begin uitvoer. Aspose.Words laat jou toe om’n eenvoudige Mail Merge operasie uit te voer met verskillende Execute methods wat verskeie data voorwerpe as die databron aanvaar.

Die volgende kode voorbeeld toon hoe om’n eenvoudige Mail Merge operasie uit te voer met behulp van een van die Execute metode:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
// Include the code for our template.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Create Merge Fields.
builder.InsertField(" MERGEFIELD CustomerName ");
builder.InsertParagraph();
builder.InsertField(" MERGEFIELD Item ");
builder.InsertParagraph();
builder.InsertField(" MERGEFIELD Quantity ");
// Fill the fields in the document with user data.
doc.MailMerge.Execute(new string[] { "CustomerName", "Item", "Quantity" },
new object[] { "John Doe", "Hawaiian", "2" });
doc.Save(ArtifactsDir + "BaseOperations.SimpleMailMerge.docx");

U kan die verskil tussen die dokument sien voordat u simple mail mergeuitvoer:

simple_mail_merge_template

En na die uitvoering van eenvoudige mail merge:

execute_simple_mail_merge

Hoe Om Verskeie Saamgesmelte Dokumente Te Skep

In Aspose.Words, die standaard Mail Merge operasie vul slegs’n enkele dokument met inhoud van jou data bron. So, jy sal die Mail Merge operasie verskeie kere moet uitvoer om verskeie saamgesmelte dokumente as’n uitset te skep.

Die volgende kode voorbeeld toon hoe om verskeie saamgesmelte dokumente te genereer tydens’n Mail Merge operasie:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DatabaseDir + "Northwind.accdb";
Document doc = new Document(MyDir + "Mail merge destination - Northwind suppliers.docx");
OleDbConnection conn = new OleDbConnection(connString);
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Customers", conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable data = new DataTable();
da.Fill(data);
// Perform a loop through each DataRow to iterate through the DataTable. Clone the template document
// instead of loading it from disk for better speed performance before the mail merge operation.
// You can load the template document from a file or stream but it is faster to load the document
// only once and then clone it in memory before each mail merge operation.
int counter = 1;
foreach (DataRow row in data.Rows)
{
Document dstDoc = (Document) doc.Clone(true);
dstDoc.MailMerge.Execute(row);
dstDoc.Save(string.Format(ArtifactsDir + "BaseOperations.ProduceMultipleDocuments_{0}.docx", counter++));
}

Mail Merge Met Streke

U kan verskillende streke in u sjabloon skep om spesiale gebiede te hê wat u eenvoudig met u data kan vul. Gebruik die Mail Merge met streke as u tabelle wil invoeg, rye met herhalende data om u dokumente dinamies te laat groei deur die streke binne u sjabloon te spesifiseer.

Jy kan geneste (kind) streke skep sowel as saamvoeg streke. Die grootste voordeel van die gebruik van hierdie tipe is om dele binne’n dokument dinamies te verhoog. Sien meer besonderhede in die volgende artikel “Nested Mail Merge with Regions”.

Hoe om Mail Merge Met Streke Uit Te Voer

‘n Mail Merge streek is’n spesifieke deel binne’n dokument wat’n beginpunt en’n eindpunt het. Beide punte word voorgestel as Mail Merge velde wat spesifieke name “TableStart:XXX” en “TableEnd:XXX” het. Alle inhoud wat in’n Mail Merge streek ingesluit is, sal outomaties herhaal word vir elke rekord in die databron.

Aspose.Words laat jou toe om Mail Merge uit te voer met streke wat verskillende Execute methods gebruik wat verskillende data-voorwerpe as die databron aanvaar.

As’n eerste stap, moet ons die DataSet te skep om dit later as’n insette parameter om die ExecuteWithRegions metode:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
private DataSet CreateDataSet()
{
// Create the customers table.
DataTable tableCustomers = new DataTable("Customers");
tableCustomers.Columns.Add("CustomerID");
tableCustomers.Columns.Add("CustomerName");
tableCustomers.Rows.Add(new object[] { 1, "John Doe" });
tableCustomers.Rows.Add(new object[] { 2, "Jane Doe" });
// Create the orders table.
DataTable tableOrders = new DataTable("Orders");
tableOrders.Columns.Add("CustomerID");
tableOrders.Columns.Add("ItemName");
tableOrders.Columns.Add("Quantity");
tableOrders.Rows.Add(new object[] { 1, "Hawaiian", 2 });
tableOrders.Rows.Add(new object[] { 2, "Pepperoni", 1 });
tableOrders.Rows.Add(new object[] { 2, "Chicago", 1 });
// Add both tables to a data set.
DataSet dataSet = new DataSet();
dataSet.Tables.Add(tableCustomers);
dataSet.Tables.Add(tableOrders);
// The "CustomerID" column, also the primary key of the customers table is the foreign key for the Orders table.
dataSet.Relations.Add(tableCustomers.Columns["CustomerID"], tableOrders.Columns["CustomerID"]);
return dataSet;
}

Die volgende kode voorbeeld toon hoe om Mail Merge uit te voer met streke met behulp van die ExecuteWithRegions(DataSet) metode:

// 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);
// The start point of mail merge with regions the dataset.
builder.InsertField(" MERGEFIELD TableStart:Customers");
// Data from rows of the "CustomerName" column of the "Customers" table will go in this MERGEFIELD.
builder.Write("Orders for ");
builder.InsertField(" MERGEFIELD CustomerName");
builder.Write(":");
// Create column headers.
builder.StartTable();
builder.InsertCell();
builder.Write("Item");
builder.InsertCell();
builder.Write("Quantity");
builder.EndRow();
// We have a second data table called "Orders", which has a many-to-one relationship with "Customers"
// picking up rows with the same CustomerID value.
builder.InsertCell();
builder.InsertField(" MERGEFIELD TableStart:Orders");
builder.InsertField(" MERGEFIELD ItemName");
builder.InsertCell();
builder.InsertField(" MERGEFIELD Quantity");
builder.InsertField(" MERGEFIELD TableEnd:Orders");
builder.EndTable();
// The end point of mail merge with regions.
builder.InsertField(" MERGEFIELD TableEnd:Customers");
// Pass our dataset to perform mail merge with regions.
DataSet customersAndOrders = CreateDataSet();
doc.MailMerge.ExecuteWithRegions(customersAndOrders);
doc.Save(ArtifactsDir + "BaseOperations.MailMergeWithRegions.docx");

U kan die verskil tussen die dokument sien voordat u Mail Merge met streke uitvoer:

mail_merge_with_regions_template

En na die uitvoering van Mail Merge met streke:

mail_merge_with_regions_execute

Beperkings van Mail Merge met Streke

Daar is’n paar belangrike punte wat jy moet oorweeg wanneer die uitvoering van’n Mail Merge met streke:

  • Die beginpunt TableStart:Orders en die eindpunt TableEnd:Orders moet albei in dieselfde ry of sel wees. Byvoorbeeld, as jy’n samesmelting streek begin in’n sel van’n tabel, moet jy die samesmelting streek eindig in dieselfde ry as die eerste sel.
  • Die merge veld naam moet ooreenstem met die kolom se naam in jou DataTable. Tensy u gekarteerde velde gespesifiseer het, sal die Mail Merge met streke nie suksesvol wees vir enige samesmeltingsveld wat’n ander naam as die kolom se naam het nie.

As een van hierdie reëls oortree word, sal jy onverwagte resultate kry of’n uitsondering kan gegooi word.