Der Berichterstellungsprozess besteht häufiger aus dem Ausfüllen der vordefinierten Dokumentvorlagen, die die Platzhalter für gewünschte Felder enthalten. Die Reporting-Engines nehmen das Vorlagendokument als Eingabe, füllen die Platzhalter dynamisch mit den Daten und generieren die resultierenden Berichte. Dieser Artikel wird auch einen ähnlichen Anwendungsfall vorstellen, bei dem Sie die Word Dokumente generieren können, indem Sie die Word-Vorlagen dynamisch und programmgesteuert mit Java füllen.
Um Word Dokumente aus DOCX-Vorlagen zu generieren, verwenden wir die LINQ Reporting Engine, die von der Aspose.Words for Java-API angeboten wird. LINQ Reporting Engine unterstützt eine Vielzahl von Tags für Text, Bilder, Listen, Tabellen, Hyperlinks und Lesezeichen für Word-Vorlagen. Die Vorlagendokumente, die diese Tags enthalten, werden von der Engine mit Daten gefüllt, die aus Java objekten sowie aus XML, JSON oder CSV Daten quellen stammen. Beginnen wir also mit der Generierung der Word Dokumente aus den Vorlagen mit Java.
In diesem Artikel wird beschrieben, wie Sie ein Word Dokument aus einer Vorlage erstellen, indem Sie Folgendes verwenden:
- Werte aus den Java objekten,
- XML Daten quelle,
- JSON Daten quelle,
- und CSV Daten quelle.
Installieren von Aspose.Words for Java – API für Word Automatisierung und Berichterstellung
Sie können Aspose.Words for Java JAR herunterladen oder es mit den folgenden Konfigurationen zu Ihrer Maven-basierten Anwendung hinzufügen.
Repository:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Abhängigkeit:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>20.1</version>
<type>pom</type>
</dependency>
Erstellen Sie Word Dokumente aus Vorlagen mit Java objekten
Um mit der Berichterstellung zu beginnen, erstellen wir zunächst ein Word Dokument, indem wir die Vorlage mit Werten aus den Java objekten füllen. Um eine Dokumentvorlage zu definieren, erstellen Sie ein neues Word Dokument, fügen die folgenden Tags ein und speichern es als DOCX-Dokument.
<<[s.getName()]>> says: "<<[s.getMessage()]>>."
In der obigen Vorlage wird “s” als Objekt der Java Klasse behandelt, die zum Füllen der Tags verwendet wird. Lassen Sie uns also eine Klasse namens Sender mit zwei Datenelementen erstellen.
public class Sender {
public Sender(String name, String message) {
_name = name;
_message = message;
}
public String getName() {
return _name;
}
public String getMessage() {
return _message;
}
private String _name;
private String _message;
}
Jetzt ist es an der Zeit, die Word-Vorlage an die LINQ Reporting Engine zu übergeben und das Word Dokument basierend auf den Werten des Sender objekts zu generieren. Im Folgenden sind die Schritte zum Erstellen des Word Dokuments aufgeführt:
- Erstellen Sie das Objekt Document und initialisieren Sie es mit dem Pfad der Vorlage.
- Erstellen und initialisieren Sie ein Objekt der Sender Klasse.
- Erstellen Sie ein Objekt der Klasse ReportingEngine.
- Erstellen Sie den Bericht mit der methode ReportingEngine.buildReport(), die die Dokumentvorlage, die Datenquelle und den Namen der Datenquelle akzeptiert.
- Speichern Sie das generierte Word Dokument mit der methode Document.save().
Das folgende Codebeispiel zeigt, wie Sie mithilfe der Werte des Java objekts ein Word Dokument aus einer Word-Vorlage generieren.
// Document objekt erstellen und mit DOCX-Vorlage initialisieren.
Document doc = new Document("template.docx");
// Sender objekt erstellen.
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// ReportingEngine objekt erstellen.
ReportingEngine engine = new ReportingEngine();
// Bericht erstellen.
engine.buildReport(doc, sender, "s");
// Als Word Dokument speichern.
doc.save("word.docx");
Ausgabe
Erstellen Sie Word Dokumente aus Vorlagen mit XML Daten
Lassen Sie uns nun einen Schritt weiter gehen und sehen, wie die Word-Vorlagen mithilfe einer XML Daten quelle in einem etwas komplexen Szenario gefüllt werden. Das Folgende ist die XML Daten quelle, die wir verwenden, um die Word-Vorlage zu füllen.
<Persons>
<Person>
<Name>John Doe</Name>
<Age>30</Age>
<Birth>1989-04-01 4:00:00 pm</Birth>
</Person>
<Person>
<Name>Jane Doe</Name>
<Age>27</Age>
<Birth>1992-01-31 07:00:00 am</Birth>
</Person>
<Person>
<Name>John Smith</Name>
<Age>51</Age>
<Birth>1968-03-08 1:00:00 pm</Birth>
</Person>
</Persons>
In diesem Szenario verwenden wir die folgenden Tags im Vorlagendokument für mehrere Datensätze in der XML Daten quelle.
<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Age)]>>
Der Java-Code zum Generieren eines Word Dokuments wäre in diesem Fall derselbe, und abgesehen davon, dass das Java objekt als Datenquelle übergeben wird, übergeben wir das Objekt XmlDataSource in der Methode ReportingEngine.buildReport(). Das folgende Codebeispiel zeigt, wie Sie ein Word Dokument erstellen, indem Sie die Dokumentvorlage mithilfe der XML Daten quelle in Java füllen.
// Document objekt erstellen und mit DOCX-Vorlage initialisieren.
Document doc = new Document("template.docx");
// XML laden
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// ReportingEngine objekt erstellen.
ReportingEngine engine = new ReportingEngine();
// Bericht erstellen.
engine.buildReport(doc, dataSource, "persons");
// Als Word Dokument speichern.
doc.save("word.docx");
Ausgabe
Erstellen Sie Word Dokumente aus einer Vorlage mit JSON Daten
Sehen wir uns nun an, wie Sie ein Word Dokument aus der DOCX-Vorlage mit einer JSON Daten quelle generieren. Im Folgenden finden Sie die JSON Daten, die wir in diesem Beispiel verwenden.
[
{
Name: "John Smith",
Contract:
[
{
Client:
{
Name: "A Company"
},
Price: 1200000
},
{
Client:
{
Name: "B Ltd."
},
Price: 750000
},
{
Client:
{
Name: "C & D"
},
Price: 350000
}
]
},
{
Name: "Tony Anderson",
Contract:
[
{
Client:
{
Name: "E Corp."
},
Price: 650000
},
{
Client:
{
Name: "F & Partners"
},
Price: 550000
}
]
},
]
In diesem Beispiel generieren wir das Word Dokument, das eine Liste der Kunden enthält, gruppiert nach ihren Managern. In Übereinstimmung mit diesem Szenario sieht die DOCX-Vorlage wie folgt aus:
<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>
Zum Laden der JSON Daten quelle stellt Aspose.Words die Klasse JsonDataSource bereit. Das folgende Codebeispiel zeigt, wie Sie mithilfe einer JSON Daten quelle in Java ein Word Dokument aus der Vorlage erstellen.
// Document objekt erstellen und mit DOCX-Vorlage initialisieren.
Document doc = new Document("template.docx");
// Laden Sie JSON
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// ReportingEngine objekt erstellen.
ReportingEngine engine = new ReportingEngine();
// Bericht erstellen.
engine.buildReport(doc, dataSource, "managers");
// Als Word Dokument speichern.
doc.save("word.docx");
Ausgabe
Erstellen Sie Word Dokumente aus einer Vorlage mit CSV Daten
Sehen wir uns zu guter Letzt an, wie Sie das Word Dokument generieren, indem Sie die Word-Vorlage mit der folgenden CSV Daten quelle füllen.
John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm
In diesem Beispiel wird die folgende Word-Vorlage verwendet:
<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Column2)]>>
Für den Umgang mit CSV Daten quellen bietet Aspose.Words die Klasse CsvDataSource. Das folgende Codebeispiel zeigt, wie Sie ein Word Dokument mithilfe einer CSV Daten quelle in Java generieren.
// Document objekt erstellen und mit DOCX-Vorlage initialisieren.
Document doc = new Document("template.docx");
// CSV Datei laden
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// ReportingEngine objekt erstellen.
ReportingEngine engine = new ReportingEngine();
// Bericht erstellen.
engine.buildReport(doc, dataSource, "persons");
// Als Word Dokument speichern.
doc.save("word.docx");
Ausgabe
Erfahren Sie mehr über die LINQ Reporting Engine
LINQ Reporting Engine unterstützt eine breite Palette von Tags zum dynamischen Generieren von Word Dokumenten mit vollem Funktionsumfang in Java. Weitere Informationen zu diesen Tags und ihrer Syntax finden Sie in diesem Artikel.
Falls Sie Fragen oder Anregungen haben, können Sie im Aspose.Words Forum posten.