Menghasilkan kata dari template di java

Proses pembuatan laporan lebih sering terdiri dari mengisi templat dokumen yang telah ditentukan sebelumnya yang berisi placeholder untuk bidang yang diinginkan. Mesin pelaporan mengambil dokumen template sebagai masukan, mengisi tempat penampung dengan data secara dinamis dan menghasilkan laporan yang dihasilkan. Artikel ini juga akan menampilkan kasus penggunaan serupa di mana Anda dapat membuat dokumen Word dengan mengisi templat Word secara dinamis dan terprogram menggunakan Java.

Untuk menghasilkan dokumen Word dari template DOCX, kami akan menggunakan LINQ Reporting Engine yang ditawarkan oleh Aspose.Words for Java API. Mesin Pelaporan LINQ mendukung berbagai tag untuk teks, gambar, daftar, tabel, hyperlink, dan bookmark untuk templat Word. Dokumen template yang berisi tag ini diisi oleh mesin dengan data yang berasal dari objek Java serta sumber data XML, JSON, atau CSV. Jadi mari kita mulai membuat dokumen Word dari template menggunakan Java.

Artikel ini akan membahas cara membuat dokumen Word dari templat menggunakan:

  • nilai dari objek Java,
  • sumber data XML,
  • sumber data JSON,
  • dan sumber data CSV.

Menginstal Aspose.Words for Java - Otomatisasi Kata dan API Pembuatan Laporan

Anda dapat mengunduh Aspose.Words for Java JAR atau menambahkannya ke aplikasi berbasis Maven menggunakan konfigurasi berikut.

Gudang:

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

Ketergantungan:

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

Hasilkan Dokumen Word dari Template menggunakan Java Objects

Untuk memulai pembuatan laporan, pertama-tama mari kita buat dokumen Word dengan mengisi templat dengan nilai dari objek Java. Untuk menentukan templat dokumen, buat dokumen Word baru, masukkan tag berikut dan simpan sebagai dokumen DOCX.

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

Pada template di atas, “s” akan diperlakukan sebagai objek kelas Java yang akan digunakan untuk mengisi tag. Jadi mari buat kelas bernama Pengirim dengan dua anggota data.

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

Sekarang, saatnya meneruskan templat Word ke Mesin Pelaporan LINQ dan menghasilkan dokumen Word berdasarkan nilai objek Pengirim. Berikut ini adalah langkah-langkah untuk membuat dokumen Word:

Contoh kode berikut menunjukkan cara membuat dokumen Word dari template Word menggunakan nilai objek Java.

// Buat objek Document dan inisialisasi dengan template DOCX.
Document doc = new Document("template.docx");
// Buat objek Pengirim.
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// Buat objek ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Membangun laporan.
engine.buildReport(doc, sender, "s");
// Simpan sebagai dokumen Word.
doc.save("word.docx");

Keluaran

menghasilkan dokumen kata dengan templat dengan objek Java

Buat Dokumen Word dari Templat menggunakan Data XML

Sekarang mari selangkah lebih maju dan lihat cara mengisi template Word menggunakan sumber data XML dalam skenario yang sedikit rumit. Berikut ini adalah sumber data XML yang akan kita gunakan untuk mengisi template 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>

Dalam skenario ini, kami akan menggunakan tag berikut di dokumen template untuk beberapa rekaman di sumber data XML.

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

Kode Java untuk menghasilkan dokumen Word, dalam hal ini, akan sama dan kecuali untuk meneruskan objek Java sebagai sumber data, kita akan meneruskan objek XmlDataSource dalam metode ReportingEngine.buildReport() . Contoh kode berikut menunjukkan cara membuat dokumen Word dengan mengisi template dokumen menggunakan sumber data XML di Java.

// Buat objek Document dan inisialisasi dengan template DOCX.
Document doc = new Document("template.docx");
// Muat XML
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// Buat objek ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Membangun laporan.
engine.buildReport(doc, dataSource, "persons");
// Simpan sebagai dokumen Word.
doc.save("word.docx");

Keluaran

menghasilkan dokumen kata dengan templat dengan XML di Jawa

Hasilkan Dokumen Word dari Template menggunakan Data JSON

Sekarang mari kita lihat cara membuat dokumen Word dari template DOCX menggunakan sumber data JSON. Berikut adalah data JSON yang akan kita gunakan dalam contoh ini.

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

Dalam contoh ini, kami akan membuat dokumen Word yang berisi daftar klien yang dikelompokkan berdasarkan manajernya. Sesuai dengan skenario ini, template DOCX akan terlihat seperti berikut:

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

Untuk memuat sumber data JSON, Aspose.Words menyediakan kelas JsonDataSource. Contoh kode berikut menunjukkan cara membuat dokumen Word dari template menggunakan sumber data JSON di Java.

// Buat objek Document dan inisialisasi dengan template DOCX.
Document doc = new Document("template.docx");
// Muat JSON
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// Buat objek ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Membangun laporan.
engine.buildReport(doc, dataSource, "managers");
// Simpan sebagai dokumen Word.
doc.save("word.docx");

Keluaran

buat dokumen kata dengan JSON di Jawa

Hasilkan Dokumen Word dari Templat menggunakan Data CSV

Last but not least, mari kita periksa cara membuat dokumen Word dengan mengisi template Word menggunakan sumber data CSV berikut.

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

Templat Word berikut akan digunakan dalam contoh ini:

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

Untuk menangani sumber data CSV, Aspose.Words menawarkan kelas CsvDataSource. Contoh kode berikut menunjukkan cara membuat dokumen Word menggunakan sumber data CSV di Java.

// Buat objek Document dan inisialisasi dengan template DOCX.
Document doc = new Document("template.docx");
// Muat CSV
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// Buat objek ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Membangun laporan.
engine.buildReport(doc, dataSource, "persons");
// Simpan sebagai dokumen Word.
doc.save("word.docx");

Keluaran

buat dokumen kata dengan CSV di java

Pelajari lebih lanjut tentang Mesin Pelaporan LINQ

Mesin Pelaporan LINQ mendukung berbagai macam tag untuk membuat dokumen Word berfitur lengkap secara dinamis di Java. Anda dapat mempelajari lebih lanjut tentang tag ini beserta sintaksnya di artikel ini.

Jika Anda memiliki pertanyaan atau pertanyaan, Anda dapat memposting ke Aspose.Words Forum.

Artikel Terkait