Arten von Mail Merge-Operationen
Die Hauptidee von Mail Merge besteht darin, automatisch ein Dokument oder mehrere Dokumente basierend auf Ihrer Vorlage und den aus Ihrer Datenquelle abgerufenen Daten zu erstellen. Mit Aspose.Words können Sie zwei verschiedene Arten von Mail Merge-Operationen ausführen: einfache Mail Merge und Mail Merge mit Regionen.
Das häufigste Beispiel für die Verwendung von einfachem Mail Merge ist, wenn Sie ein Dokument für verschiedene Kunden senden möchten, indem Sie deren Namen am Anfang des Dokuments einfügen. Dazu müssen Sie Seriendruckfelder wie First Name und Last Name in Ihrer Vorlage erstellen und diese dann mit Daten aus Ihrer Datenquelle ausfüllen. Das häufigste Beispiel für die Verwendung von Mail Merge mit Regionen ist, wenn Sie ein Dokument senden möchten, das bestimmte Bestellungen mit der Liste aller Artikel in jeder Bestellung enthält. Dazu müssen Sie für jede Bestellung Zusammenführungsregionen in Ihrer vorlageneigenen Region erstellen, um sie mit allen erforderlichen Daten für die Artikel zu füllen.
Der Hauptunterschied zwischen beiden Zusammenführungsvorgängen besteht darin, dass einfach Mail Merge (ohne Regionen) das gesamte Dokument für jeden Datenquellendatensatz wiederholt, während Mail Merge mit Regionen nur bestimmte Regionen pro Datensatz wiederholt. Sie können sich eine einfache Mail Merge -Operation als einen bestimmten Fall der Zusammenführung mit Regionen vorstellen, in denen die einzige Region das gesamte Dokument ist.
Einfache Mail Merge Bedienung
Ein einfaches Mail Merge wird verwendet, um die Mail Merge -Felder in Ihrer Vorlage mit den erforderlichen Daten aus Ihrer Datenquelle zu füllen (Einzeltabellendarstellung). Es ähnelt also dem klassischen Mail Merge in Microsoft Word.
Sie können Ihrer Vorlage ein oder mehrere Seriendruckfelder hinzufügen und dann die einfache Operation Mail Merge ausführen. Es wird empfohlen, es zu verwenden, wenn Ihre Vorlage keine Zusammenführungsbereiche enthält.
Die Haupteinschränkung bei der Verwendung dieses Typs besteht darin, dass der gesamte Dokumentinhalt für jeden Datensatz in der Datenquelle wiederholt wird.
So führen Sie eine einfache Mail Merge -Operation {#how-to-execute-a-simple-mail-merge-operation} aus
Sobald Ihre Vorlage fertig ist, können Sie mit der einfachen Operation Mail Merge beginnen. Mit Aspose.Words können Sie eine einfache Mail Merge -Operation mit verschiedenen Execute methods ausführen, die verschiedene Datenobjekte als Datenquelle akzeptieren.
Das folgende Codebeispiel zeigt, wie eine einfache Mail Merge -Operation mit einer der Execute-Methoden ausgeführt wird:
// 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"); |
Sie können den Unterschied zwischen dem Dokument feststellen, bevor Sie einfach mail merge ausführen:

Und nach dem Ausführen von einfachem mail merge:

So erstellen Sie mehrere zusammengeführte Dokumente
In Aspose.Words füllt der Standardoperation Mail Merge nur ein einzelnes Dokument mit Inhalten aus Ihrer Datenquelle. Sie müssen also die Operation Mail Merge mehrmals ausführen, um mehrere zusammengeführte Dokumente als Ausgabe zu erstellen.
Das folgende Codebeispiel zeigt, wie mehrere zusammengeführte Dokumente während eines Mail Merge-Vorgangs generiert werden:
// 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 mit Regionen
Sie können in Ihrer Vorlage verschiedene Regionen erstellen, um spezielle Bereiche zu haben, die Sie einfach mit Ihren Daten füllen können. Verwenden Sie Mail Merge mit Regionen, wenn Sie Tabellen und Zeilen mit sich wiederholenden Daten einfügen möchten, damit Ihre Dokumente dynamisch wachsen, indem Sie diese Regionen in Ihrer Vorlage angeben.
Sie können sowohl verschachtelte (untergeordnete) Regionen erstellen als auch Regionen zusammenführen. Der Hauptvorteil der Verwendung dieses Typs besteht darin, Teile innerhalb eines Dokuments dynamisch zu vergrößern. Weitere Details finden Sie im nächsten Artikel “Verschachtelte Mail Merge mit Regionen”.
So führen Sie Mail Merge mit Regionen aus
Ein Mail Merge -Bereich ist ein bestimmter Teil in einem Dokument, der einen Start- und einen Endpunkt hat. Beide Punkte werden als Mail Merge -Felder dargestellt, die bestimmte Namen “TableStart:XXX” und “TableEnd:XXX” haben. Alle Inhalte, die in einer Mail Merge-Region enthalten sind, werden automatisch für jeden Datensatz in der Datenquelle wiederholt.
Mit Aspose.Words können Sie Mail Merge mit Regionen ausführen, die verschiedene Execute methods verwenden, die verschiedene Datenobjekte als Datenquelle akzeptieren.
Als ersten Schritt müssen wir die DataSet
erstellen, um sie später als Eingabeparameter an die ExecuteWithRegions
-Methode zu übergeben:
// 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; | |
} |
Das folgende Codebeispiel zeigt, wie Mail Merge mit Regionen mit der Methode ExecuteWithRegions(DataSet) ausgeführt wird:
// 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"); |
Sie können den Unterschied zwischen dem Dokument feststellen, bevor Sie Mail Merge mit Regionen ausführen:

Und nach dem Ausführen von Mail Merge mit Regionen:

Einschränkungen von Mail Merge mit Regionen
Es gibt einige wichtige Punkte, die Sie beachten müssen, wenn Sie eine Mail Merge mit Regionen durchführen:
- Der Startpunkt TableStart:Orders und der Endpunkt TableEnd:Orders müssen sich beide in derselben Zeile oder Zelle befinden. Wenn Sie beispielsweise einen Zusammenführungsbereich in einer Zelle einer Tabelle beginnen, müssen Sie den Zusammenführungsbereich in derselben Zeile wie die erste Zelle beenden.
- Der Name des Seriendruckfelds muss mit dem Namen der Spalte in Ihrem DataTable übereinstimmen. Sofern Sie keine zugeordneten Felder angegeben haben, ist die Mail Merge mit Regionen für Seriendruckfelder, die einen anderen Namen als den Namen der Spalte haben, nicht erfolgreich.
Wenn eine dieser Regeln verletzt wird, erhalten Sie unerwartete Ergebnisse oder es wird möglicherweise eine Ausnahme ausgelöst.