![Generera ord från mall i java](images/Generate-Word-from-Template-Java-1.png#center)
Rapportgenereringsprocessen består ofta av att fylla i de fördefinierade dokumentmallarna som innehåller platshållarna för önskade fält. Rapporteringsmotorerna tar malldokumentet som indata, fyller platshållarna med data dynamiskt och genererar de resulterande rapporterna. Om du letar efter ett Java-program för att generera Word-dokument från mallar, kommer den här artikeln att ge dig den bästa lösningen. Så låt oss se hur man skapar Word-dokument genom att fylla i mallarna programmatiskt i Java.
Java-bibliotek för att generera Word-dokument från mallar
För att generera Word-dokument från DOCX-mallar använder vi LINQ Reporting Engine som erbjuds av Aspose.Words for Java. LINQ Reporting Engine stöder en mängd olika taggar för text, bilder, listor, tabeller, hyperlänkar och bokmärken för Word-mallar. Malldokumenten som innehåller dessa taggar fylls i av motorn med data som kommer från Java-objekt såväl som XML-, JSON- eller CSV-datakällor. Så låt oss börja generera Word-dokument från mallarna med Java.
Den här artikeln kommer att täcka hur man genererar ett Word-dokument från en mall med hjälp av:
- värden från Java-objekten,
- XML-datakälla,
- JSON-datakälla,
- och CSV-datakälla.
Installera Aspose.Words för Java
Du kan ladda ner Aspose.Words for Java JAR eller lägga till det i din Maven-baserade applikation med följande konfigurationer.
Förvar:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Beroende:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>22.11</version>
<type>pom</type>
</dependency>
Generera Word-dokument från mall med Java-objekt
För att påbörja rapportgenereringen, låt oss först skapa ett Word-dokument genom att fylla i mallen med värden från Java-objekten. För att definiera en dokumentmall, skapa ett nytt Word-dokument, infoga följande taggar och spara det som ett DOCX-dokument.
<<[s.getName()]>> says: "<<[s.getMessage()]>>."
I mallen ovan kommer “s” att behandlas som ett objekt av Java-klassen som kommer att användas för att fylla i taggarna. Så låt oss skapa en klass som heter Sender med två datamedlemmar.
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;
}
Nu är det dags att skicka Word-mallen till LINQ Reporting Engine och generera Word-dokumentet baserat på värdena för avsändarens objekt. Följande är stegen för att skapa Word-dokumentet:
- Skapa objektet Dokument och initiera det med mallens sökväg.
- Skapa och initiera ett objekt av klassen Sender.
- Skapa ett objekt av klassen ReportingEngine.
- Skapa rapporten med metoden ReportingEngine.buildReport() som accepterar dokumentmallen, datakällan och namnet på datakällan.
- Spara genererat Word-dokument med metoden Document.save().
Följande kodexempel visar hur man genererar ett Word-dokument från en Word-mall med hjälp av Java-objektets värden.
// Skapa dokumentobjekt och initiera med DOCX-mall.
Document doc = new Document("template.docx");
// Skapa avsändarobjekt.
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// Skapa ReportingEngine-objekt.
ReportingEngine engine = new ReportingEngine();
// Bygg rapport.
engine.buildReport(doc, sender, "s");
// Spara som Word-dokument.
doc.save("word.docx");
Produktion
![generera word-dokument för mall med Java-objekt](images/Create-word-document-in-Java.png#center)
Java: Skapa Word-dokument från mall med hjälp av XML-data
Låt oss nu ta ett steg längre och se hur man fyller i Word-mallarna med hjälp av en XML-datakälla i ett lite komplext scenario. Följande är XML-datakällan som vi kommer att använda för att fylla i Word-mallen.
<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>
I det här scenariot använder vi följande taggar i malldokumentet för flera poster i XML-datakällan.
<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Age)]>>
Java-koden för att generera Word-dokument, i det här fallet, skulle vara densamma och förutom att skicka Java-objekt som datakälla skickar vi objektet XmlDataSource i metoden ReportingEngine.buildReport(). Följande kodexempel visar hur du skapar ett Word-dokument genom att fylla i dokumentmallen med XML-datakälla i Java.
// Skapa dokumentobjekt och initiera med DOCX-mall.
Document doc = new Document("template.docx");
// Ladda XML
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// Skapa ReportingEngine-objekt.
ReportingEngine engine = new ReportingEngine();
// Bygg rapport.
engine.buildReport(doc, dataSource, "persons");
// Spara som Word-dokument.
doc.save("word.docx");
Produktion
![generera word-dokument för mall med XML i Java](images/Create-word-document-in-Java-using-XML.png#center)
Java: Generera Word-dokument från mall med JSON-data
Låt oss nu ta en titt på hur man genererar Word-dokument från DOCX-mallen med hjälp av en JSON-datakälla. Följande är JSON-data som vi kommer att använda i det här exemplet.
[
{
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
}
]
},
]
I det här exemplet kommer vi att skapa Word-dokumentet som innehåller en lista över klienterna grupperade efter deras chefer. Efter detta scenario kommer DOCX-mallen att se ut så här:
<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>
För att ladda JSON-datakällan tillhandahåller Aspose.Words klassen JsonDataSource. Följande kodexempel visar hur du skapar ett Word-dokument från mallen med en JSON-datakälla i Java.
// Skapa dokumentobjekt och initiera med DOCX-mall.
Document doc = new Document("template.docx");
// Ladda JSON
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// Skapa ReportingEngine-objekt.
ReportingEngine engine = new ReportingEngine();
// Bygg rapport.
engine.buildReport(doc, dataSource, "managers");
// Spara som Word-dokument.
doc.save("word.docx");
Produktion
![skapa word-dokument med JSON i Java](images/Create-word-document-in-Java-using-JSON.png#center)
Generera Word-dokument med CSV-data i Java
Sist men inte minst, låt oss kolla in hur man genererar Word-dokumentet genom att fylla i Word-mallen med hjälp av följande CSV-datakälla.
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
Följande Word-mall kommer att användas i detta exempel:
<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Column2)]>>
För att hantera CSV-datakällor erbjuder Aspose.Words klass CsvDataSource. Följande kodexempel visar hur man genererar ett Word-dokument med en CSV-datakälla i Java.
// Skapa dokumentobjekt och initiera med DOCX-mall.
Document doc = new Document("template.docx");
// Ladda CSV
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// Skapa ReportingEngine-objekt.
ReportingEngine engine = new ReportingEngine();
// Bygg rapport.
engine.buildReport(doc, dataSource, "persons");
// Spara som Word-dokument.
doc.save("word.docx");
Produktion
![skapa word-dokument med CSV i java](images/Create-word-document-in-Java-using-CSV.png#center)
Generera Word-dokument med en gratis licens
Du kan få en gratis tillfällig licens och generera Word-dokument utan utvärderingsbegränsningar.
Java LINQ Reporting Engine - Läs mer
LINQ Reporting Engine stöder ett brett utbud av taggar för att generera fullfjädrade Word-dokument dynamiskt i Java. Du kan utforska mer om dessa taggar tillsammans med deras syntax i den här artikeln.
Om du skulle ha några frågor eller funderingar kan du göra ett inlägg på Aspose.Words Forum.