Wygeneruj słowo z szablonu w Javie

Proces generowania raportu częściej polega na wypełnieniu predefiniowanych szablonów dokumentów zawierających symbole zastępcze dla żądanych pól. Mechanizmy raportowania przyjmują dokument szablonu jako dane wejściowe, dynamicznie wypełniają pola zastępcze danymi i generują wynikowe raporty. W tym artykule zostanie również przedstawiony podobny przypadek użycia, w którym można generować dokumenty programu Word, wypełniając szablony programu Word dynamicznie i programowo przy użyciu języka Java.

Do generowania dokumentów Word z szablonów DOCX użyjemy LINQ Reporting Engine oferowanego przez Aspose.Words for Java API. LINQ Reporting Engine obsługuje różne znaczniki tekstu, obrazów, list, tabel, hiperłączy i zakładek dla szablonów Word. Dokumenty szablonów zawierające te znaczniki są wypełniane przez silnik danymi pochodzącymi z obiektów Java oraz źródeł danych XML, JSON lub CSV. Zacznijmy więc generować dokumenty programu Word z szablonów przy użyciu języka Java.

W tym artykule omówiono sposób generowania dokumentu programu Word z szablonu przy użyciu:

  • wartości z obiektów Java,
  • źródło danych XML,
  • źródło danych JSON,
  • i źródło danych CSV.

Instalowanie Aspose.Words for Java — interfejs API automatyzacji programu Word i generowania raportów

Możesz pobrać Aspose.Words for Java JAR lub dodać go do swojej aplikacji opartej na Maven, korzystając z poniższych konfiguracji.

Magazyn:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Zależność:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>20.1</version>
    <type>pom</type>
</dependency>

Generuj dokumenty programu Word z szablonu przy użyciu obiektów Java

Aby rozpocząć generowanie raportu, utwórzmy najpierw dokument programu Word, wypełniając szablon wartościami z obiektów Java. Aby zdefiniować szablon dokumentu, utwórz nowy dokument Word, wstaw następujące znaczniki i zapisz go jako dokument DOCX.

<<[s.getName()]>> says: "<<[s.getMessage()]>>."

W powyższym szablonie “s” będzie traktowane jako obiekt klasy Java, który zostanie użyty do wypełnienia tagów. Stwórzmy więc klasę o nazwie Sender z dwoma elementami danych.

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;
}

Teraz nadszedł czas, aby przekazać szablon Word do LINQ Reporting Engine i wygenerować dokument Word na podstawie wartości obiektu Sender. Poniżej przedstawiono kroki generowania dokumentu programu Word:

  • Utwórz obiekt Document i zainicjuj go ścieżką szablonu.
  • Utwórz i zainicjuj obiekt klasy Sender.
  • Utwórz obiekt klasy ReportingEngine.
  • Zbuduj raport przy użyciu metody ReportingEngine.buildReport(), która akceptuje szablon dokumentu, źródło danych oraz nazwę źródła danych.
  • Zapisz wygenerowany dokument Worda metodą Document.save().

Poniższy przykładowy kod pokazuje, jak wygenerować dokument programu Word z szablonu programu Word przy użyciu wartości obiektu Java.

// Utwórz obiekt Document i zainicjuj za pomocą szablonu DOCX.
Document doc = new Document("template.docx");
// Utwórz obiekt nadawcy.
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// Utwórz obiekt ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Zbuduj raport.
engine.buildReport(doc, sender, "s");
// Zapisz jako dokument Word.
doc.save("word.docx");

Wyjście

wygeneruj dokument Word według szablonu z obiektami Java

Twórz dokumenty programu Word z szablonu przy użyciu danych XML

Pójdźmy teraz o krok dalej i zobaczmy, jak wypełnić szablony programu Word przy użyciu źródła danych XML w nieco złożonym scenariuszu. Poniżej znajduje się źródło danych XML, którego użyjemy do wypełnienia szablonu programu Word.

<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>

W tym scenariuszu użyjemy następujących tagów w dokumencie szablonu dla wielu rekordów w źródle danych XML.

<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Age)]>>

Kod Java do generowania dokumentu Word w tym przypadku byłby taki sam i poza przekazaniem obiektu Java jako źródła danych, przekażemy obiekt XmlDataSource w metodzie ReportingEngine.buildReport(). Poniższy przykładowy kod pokazuje, jak utworzyć dokument programu Word przez wypełnienie szablonu dokumentu przy użyciu źródła danych XML w języku Java.

// Utwórz obiekt Document i zainicjuj za pomocą szablonu DOCX.
Document doc = new Document("template.docx");
// Załaduj plik XML
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// Utwórz obiekt ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Zbuduj raport.
engine.buildReport(doc, dataSource, "persons");
// Zapisz jako dokument Word.
doc.save("word.docx");

Wyjście

wygeneruj dokument Word według szablonu z XML w Javie

Generuj dokumenty Word z szablonu przy użyciu danych JSON

Przyjrzyjmy się teraz, jak wygenerować dokument Word z szablonu DOCX przy użyciu źródła danych JSON. Poniżej przedstawiono dane JSON, których użyjemy w tym przykładzie.

[
   {
       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
           }
       ]
   },
]

W tym przykładzie wygenerujemy dokument programu Word zawierający listę klientów pogrupowanych według ich menedżerów. Zgodnie z tym scenariuszem szablon DOCX będzie wyglądał następująco:

<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>

Do ładowania źródła danych JSON Aspose.Words udostępnia klasę JsonDataSource. Poniższy przykładowy kod pokazuje, jak utworzyć dokument programu Word na podstawie szablonu przy użyciu źródła danych JSON w języku Java.

// Utwórz obiekt Document i zainicjuj za pomocą szablonu DOCX.
Document doc = new Document("template.docx");
// Załaduj JSON
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// Utwórz obiekt ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Zbuduj raport.
engine.buildReport(doc, dataSource, "managers");
// Zapisz jako dokument Word.
doc.save("word.docx");

Wyjście

utwórz dokument Word z JSON w Javie

Generuj dokumenty Word z szablonu przy użyciu danych CSV

Na koniec sprawdźmy, jak wygenerować dokument programu Word, wypełniając szablon programu Word przy użyciu następującego źródła danych CSV.

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

W tym przykładzie zostanie użyty następujący szablon programu Word:

<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.average(p => p.Column2)]>>

Do obsługi źródeł danych CSV Aspose.Words oferuje klasę CsvDataSource. Poniższy przykładowy kod pokazuje, jak wygenerować dokument programu Word przy użyciu źródła danych CSV w Javie.

// Utwórz obiekt Document i zainicjuj za pomocą szablonu DOCX.
Document doc = new Document("template.docx");
// Załaduj plik CSV
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// Utwórz obiekt ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Zbuduj raport.
engine.buildReport(doc, dataSource, "persons");
// Zapisz jako dokument Word.
doc.save("word.docx");

Wyjście

utwórz dokument Word z CSV w Javie

Dowiedz się więcej o aparacie raportowania LINQ

LINQ Reporting Engine obsługuje szeroką gamę tagów do dynamicznego generowania w pełni funkcjonalnych dokumentów Word w Javie. Możesz dowiedzieć się więcej o tych tagach wraz z ich składnią w tym artykule.

Jeśli masz jakieś pytania lub wątpliwości, możesz pisać na Aspose.Words Forum.

Powiązane artykuły)