Generera ord från mall i java

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

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

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

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

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.

Relaterade artiklar)