Tạo từ từ mẫu trong java

Quá trình tạo báo cáo thường bao gồm điền vào các mẫu tài liệu được xác định trước có chứa các trình giữ chỗ cho các trường mong muốn. Các công cụ báo cáo lấy tài liệu mẫu làm đầu vào, điền dữ liệu vào các trình giữ chỗ một cách linh hoạt và tạo các báo cáo kết quả. Bài viết này cũng sẽ giới thiệu một trường hợp sử dụng tương tự, nơi bạn có thể tạo các tài liệu Word bằng cách điền các mẫu Word một cách linh hoạt và theo chương trình bằng cách sử dụng Java.

Để tạo tài liệu Word từ các mẫu DOCX, chúng ta sẽ sử dụng Công cụ báo cáo LINQ do API Aspose.Words for Java cung cấp. LINQ Reporting Engine hỗ trợ nhiều loại thẻ cho văn bản, hình ảnh, danh sách, bảng, siêu liên kết và dấu trang cho các mẫu Word. Các tài liệu mẫu chứa các thẻ này được công cụ điền với dữ liệu đến từ các đối tượng Java cũng như các nguồn dữ liệu XML, JSON hoặc CSV. Vì vậy, hãy bắt đầu tạo tài liệu Word từ các mẫu bằng Java.

Bài viết này sẽ đề cập đến cách tạo tài liệu Word từ một mẫu bằng cách sử dụng:

  • các giá trị từ các đối tượng Java,
  • nguồn dữ liệu XML,
  • nguồn dữ liệu JSON,
  • và nguồn dữ liệu CSV.

Cài đặt Aspose.Words for Java - Tự động hóa Word và API tạo báo cáo

Bạn có thể tải xuống Aspose.Words for Java JAR hoặc thêm nó vào ứng dụng dựa trên Maven của mình bằng các cấu hình sau.

Kho:

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

phụ thuộc:

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

Tạo tài liệu Word từ mẫu bằng các đối tượng Java

Để bắt đầu tạo báo cáo, trước tiên hãy tạo một tài liệu Word bằng cách điền vào mẫu các giá trị từ các đối tượng Java. Để xác định mẫu tài liệu, hãy tạo một tài liệu Word mới, chèn các thẻ sau và lưu dưới dạng tài liệu DOCX.

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

Trong mẫu trên, “s” sẽ được coi là một đối tượng của lớp Java sẽ được sử dụng để điền các thẻ. Vì vậy, hãy tạo một lớp có tên Người gửi với hai thành viên dữ liệu.

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

Bây giờ, đã đến lúc chuyển mẫu Word tới Công cụ báo cáo LINQ và tạo tài liệu Word dựa trên các giá trị của đối tượng Người gửi. Sau đây là các bước để tạo tài liệu Word:

  • Tạo đối tượng Document và khởi tạo nó bằng đường dẫn của mẫu.
  • Tạo và khởi tạo một đối tượng của lớp Sender.
  • Tạo một đối tượng của lớp ReportingEngine.
  • Tạo báo cáo bằng phương pháp ReportingEngine.buildReport() chấp nhận mẫu tài liệu, nguồn dữ liệu và tên của nguồn dữ liệu.
  • Lưu tài liệu Word đã tạo bằng phương pháp Document.save().

Mẫu mã sau đây cho biết cách tạo tài liệu Word từ mẫu Word bằng cách sử dụng các giá trị của đối tượng Java.

// Tạo đối tượng Document và khởi tạo với DOCX template.
Document doc = new Document("template.docx");
// Tạo đối tượng Người gửi.
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// Tạo đối tượng ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Xây dựng báo cáo.
engine.buildReport(doc, sender, "s");
// Lưu dưới dạng tài liệu Word.
doc.save("word.docx");

đầu ra

tạo tài liệu từ theo mẫu với các đối tượng Java

Tạo Tài liệu Word từ Mẫu bằng Dữ liệu XML

Bây giờ chúng ta hãy tiến thêm một bước và xem cách điền các mẫu Word bằng cách sử dụng nguồn dữ liệu XML trong một tình huống hơi phức tạp. Sau đây là nguồn dữ liệu XML mà chúng tôi sẽ sử dụng để điền vào mẫu 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>

Trong trường hợp này, chúng tôi sẽ sử dụng các thẻ sau trong tài liệu mẫu cho nhiều bản ghi trong nguồn dữ liệu XML.

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

Trong trường hợp này, mã Java để tạo tài liệu Word sẽ giống nhau và ngoại trừ việc chuyển đối tượng Java làm nguồn dữ liệu, chúng tôi sẽ chuyển đối tượng XmlDataSource trong phương thức ReportingEngine.buildReport(). Mẫu mã sau đây cho biết cách tạo tài liệu Word bằng cách điền vào mẫu tài liệu bằng cách sử dụng nguồn dữ liệu XML trong Java.

// Tạo đối tượng Document và khởi tạo với DOCX template.
Document doc = new Document("template.docx");
// tải XML
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// Tạo đối tượng ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Xây dựng báo cáo.
engine.buildReport(doc, dataSource, "persons");
// Lưu dưới dạng tài liệu Word.
doc.save("word.docx");

đầu ra

tạo tài liệu từ theo mẫu với XML trong Java

Tạo Tài liệu Word từ Mẫu bằng Dữ liệu JSON

Bây giờ chúng ta hãy xem cách tạo tài liệu Word từ mẫu DOCX bằng cách sử dụng nguồn dữ liệu JSON. Sau đây là dữ liệu JSON mà chúng tôi sẽ sử dụng trong ví dụ này.

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

Trong ví dụ này, chúng tôi sẽ tạo tài liệu Word có chứa danh sách khách hàng được nhóm bởi người quản lý của họ. Theo kịch bản này, mẫu DOCX sẽ giống như sau:

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

Để tải nguồn dữ liệu JSON, Aspose.Words cung cấp lớp JsonDataSource. Mẫu mã sau đây cho biết cách tạo tài liệu Word từ mẫu bằng cách sử dụng nguồn dữ liệu JSON trong Java.

// Tạo đối tượng Document và khởi tạo với DOCX template.
Document doc = new Document("template.docx");
// Tải JSON
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// Tạo đối tượng ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Xây dựng báo cáo.
engine.buildReport(doc, dataSource, "managers");
// Lưu dưới dạng tài liệu Word.
doc.save("word.docx");

đầu ra

tạo tài liệu word với JSON trong Java

Tạo Tài liệu Word từ Mẫu bằng Dữ liệu CSV

Cuối cùng nhưng không kém phần quan trọng, hãy xem cách tạo tài liệu Word bằng cách điền mẫu Word bằng nguồn dữ liệu CSV sau.

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

Mẫu Word sau đây sẽ được sử dụng trong ví dụ này:

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

Để xử lý các nguồn dữ liệu CSV, Aspose.Words cung cấp lớp CsvDataSource. Mẫu mã sau đây cho biết cách tạo tài liệu Word bằng nguồn dữ liệu CSV trong Java.

// Tạo đối tượng Document và khởi tạo với DOCX template.
Document doc = new Document("template.docx");
// Tải CSV
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// Tạo đối tượng ReportingEngine.
ReportingEngine engine = new ReportingEngine();
// Xây dựng báo cáo.
engine.buildReport(doc, dataSource, "persons");
// Lưu dưới dạng tài liệu Word.
doc.save("word.docx");

đầu ra

tạo tài liệu word bằng CSV trong java

Tìm hiểu thêm về Công cụ báo cáo LINQ

LINQ Reporting Engine hỗ trợ nhiều loại thẻ để tạo các tài liệu Word đầy đủ tính năng một cách linh hoạt trong Java. Bạn có thể khám phá thêm về các thẻ này cùng với cú pháp của chúng trong bài viết này.

Trong trường hợp bạn có bất kỳ câu hỏi hoặc thắc mắc nào, bạn có thể đăng lên Diễn đàn Aspose.Words.

Những bài viết liên quan)