Mail Merge und Berichterstattung

Mail Merge ist eine beliebte Funktion zum schnellen und einfachen Erstellen von Dokumenten wie Briefen, Etiketten und Umschlägen. Mit Aspose.Words können Sie Dokumente aus Vorlagen mit Mail Merge-Feldern generieren.

Ein Mail Merge-Feld ist ein Feld, das Sie in eine mail merge-Vorlage einfügen können, um bestimmte Werte aus einem Datenquellendatensatz in Ausgabedokumente aufzunehmen. Sie können beispielsweise ein Seriendruckfeld in eine E-Mail-Vorlage einfügen, sodass die Begrüßung den Vornamen des Empfängers anstelle eines generischen “Hallo!”. Aspose.Words fügt Daten aus einer externen Quelle, z. B. einer Datenbank oder Datei, in diese Felder ein und formatiert sie. Das resultierende Dokument wird im angegebenen Ordner gespeichert.

Aspose.Words übernimmt die Standardfunktionalität Mail Merge und entwickelt sie um viele Schritte weiter, um daraus eine vollwertige Berichtslösung zu machen, mit der Sie noch komplexere Dokumente wie Berichte, Kataloge, Inventare und Rechnungen erstellen können. Hier sind einige Vorteile der Aspose.Words Reporting-Lösung:

  • Berichte in Microsoft Word mit Standardfeldern von Mail Merge entwerfen
  • Definieren Sie Bereiche im Dokument, die wachsen, z. B. detaillierte Auftragszeilen
  • Bilder während einer mail merge einfügen
  • Führen Sie beliebige benutzerdefinierte Logik aus, steuern Sie die Formatierung oder fügen Sie komplexe Inhalte mit Mail Merge -Ereignishandlern ein
  • Dokumente mit Daten aus beliebigen Datenquellen ausfüllen

Mechanismus und Hauptkomponenten von Mail Merge

Aspose.Words bietet die Möglichkeit, Dokumente in verschiedenen unterstützte Formate zu laden, und ermöglicht es Benutzern dann, einen Mail Merge-Vorgang auszuführen.

Normalerweise können Sie in einem geladenen Dokument Seriendruckfelder speichern, z. B. ein Dokument im Format DOCX. Es gibt jedoch Formate, in denen solche Felder nicht gespeichert werden, z. B. TXT. Wenn Aspose.Words das Laden solcher Dateiformate unterstützt, können Sie die Seriendruckfelder direkt zum Dokumentmodell hinzufügen, das Dokument in einem praktischen unterstütztes Format speichern und den Vorgang Mail Merge ausführen.

Die Operation Mail Merge führt Ihre mail merge template und Ihre data source zusammen, um individuelle merged documents zu generieren.

Was ist eine Mail Merge Vorlage

Das Ziel der Anwendung einer mail merge-Operation mithilfe einer Seriendruckvorlage besteht darin, den Prozess der Erstellung eines Dokuments zu vereinfachen.

Es gibt verschiedene Möglichkeiten, eine Zusammenführungsvorlage zu erstellen und zu gestalten. Sie können Microsoft Word verwenden, und die Zusammenführungsvorlage muss keine Microsoft Word -Vorlage sein, dh ein Dokument im Format DOT oder DOTX, es kann ein reguläres Dokument im Format DOC oder DOCX sein. Sie müssen einige spezielle Felder, sogenannte Seriendruckfelder, an Stellen in diese Vorlage einfügen, an denen Daten aus Ihrer Datenquelle später eingefügt werden sollen. Oder Sie können programmgesteuert eine Zusammenführungsvorlage mit der Klasse DocumentBuilder erstellen.

Die Seriendruckvorlage enthält den Haupttext, der in allen Ausgabedokumenten gleich sein sollte, nachdem Sie den Vorgang Mail Merge ausgeführt haben. Sie können ein beliebiges Format für Ihre Vorlage verwenden, wenn Sie Seriendruckfelder hinzufügen können. Alle Seriendruckfelder in Ihrer Vorlage werden während des Vorgangs Mail Merge aus Ihrer Datenquelle ausgefüllt.

Datenquellen für einen Mail Merge Vorgang

Aspose.Words Mail Merge akzeptiert verschiedene Datenquellen. Dies kann entweder ein DataTable, DataView, DataSet, IDataReader, ein Array von Werten, die von ADO .NET unterstützt werden, oder benutzerdefinierte Datenquellen, die durch IMailMergeDataSource-Implementierungen dargestellt werden.

Die Datenquelle enthält alle Informationen, die während des Mail Merge-Vorgangs abgerufen werden, um einzelne E-Mails und Dokumente zu personalisieren. Datenquellen können manuell erstellt oder durch Berichterstellung aus einer vorhandenen Datenbank oder Anwendung generiert werden. Wenn Sie Daten im Format XML haben, können Sie sie laden und mit DataSet zusammenführen. Die Operation Mail Merge durchläuft alle Datenquellendatensätze und fügt sie in Mail Merge-Felder im Dokument ein. Sie können einige mail merge-Schnittstellen wie IMailMergeDataSourceRoot implementieren, um Daten aus einer beliebigen Datenquelle zusammenzuführen, einschließlich einer LINQ-Abfrage, einer XML-Datei oder Geschäftsobjekten.

Das folgende Codebeispiel zeigt, wie eine Datentabelle als Datenquelle für die Operation Mail Merge geladen wird:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
private static final String dataDir = Utils.getSharedDataDir(ExecuteMailMergeWithRegions.class) + "MailMerge/";
public static void main(String[] args) throws Exception {
Document doc = new Document(dataDir + "MailMerge.ExecuteWithRegions.doc");
int orderId = 10444;
// Perform several mail merge operations populating only part of the document each time.
// Use DataTable as a data source.
// The table name property should be set to match the name of the region defined in the document.
DataTable orderTable = getTestOrder(orderId);
doc.getMailMerge().executeWithRegions(orderTable);
DataTable orderDetailsTable = getTestOrderDetails(orderId, "ExtendedPrice DESC");
doc.getMailMerge().executeWithRegions(orderDetailsTable);
doc.save(dataDir + "MailMerge.ExecuteWithRegionsDataTable Out.doc");
}
private static DataTable getTestOrder(int orderId) throws Exception {
java.sql.ResultSet resultSet = executeDataTable(java.text.MessageFormat.format("SELECT * FROM AsposeWordOrders WHERE OrderId = {0}", Integer.toString(orderId)));
return new DataTable(resultSet, "Orders");
}
private static DataTable getTestOrderDetails(int orderId, String orderBy) throws Exception {
StringBuilder builder = new StringBuilder();
builder.append(java.text.MessageFormat.format("SELECT * FROM AsposeWordOrderDetails WHERE OrderId = {0}", Integer.toString(orderId)));
if ((orderBy != null) && (orderBy.length() > 0)) {
builder.append(" ORDER BY ");
builder.append(orderBy);
}
java.sql.ResultSet resultSet = executeDataTable(builder.toString());
return new DataTable(resultSet, "OrderDetails");
}
/**
* Utility function that creates a connection, command, executes the command
* and return the result in a DataTable.
*/
private static java.sql.ResultSet executeDataTable(String commandText) throws Exception {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String connString = "jdbc:ucanaccess://" + dataDir + "Northwind.mdb";
// From Wikipedia: The Sun driver has a known issue with character encoding and Microsoft Access databases.
// Microsoft Access may use an encoding that is not correctly translated by the driver, leading to the replacement
// in strings of, for example, accented characters by question marks.
//
// In this case I have to set CP1252 for the European characters to come through in the data values.
java.util.Properties props = new java.util.Properties();
props.put("charSet", "Cp1252");
// DSN-less DB connection.
java.sql.Connection conn = java.sql.DriverManager.getConnection(connString, props);
// Create and execute a command.
java.sql.Statement statement = conn.createStatement();
return statement.executeQuery(commandText);
}

Zusammengeführte Dokumente eines Mail Merge Vorgangs

Ein zusammengeführtes Dokument ist das Ergebnis des Vorgangs Mail Merge, wenn Sie die Vorlage mit der Datenquelle zusammenführen. Alle Seriendruckfelder im Seriendruckdokument werden durch tatsächliche Daten aus Ihrer Datenquelle ersetzt.

Die folgende Abbildung zeigt ein Beispiel für die Zusammenführungsvorlage mit zusammengeführten Feldern vor dem Ausführen des Vorgangs Mail Merge.

mail-merge-and-reporting-aspose-words-java-1

Die folgende Abbildung zeigt ein Beispiel für das zusammengeführte Ausgabedokument als Ergebnis der Ausführung der Operation Mail Merge.

mail-merge-and-reporting-aspose-words-java-2

Siehe auch