Java의 템플릿에서 단어 생성

보고서 생성 프로세스는 원하는 필드에 대한 자리 표시자를 포함하는 미리 정의된 문서 템플릿을 채우는 것으로 구성되는 경우가 더 많습니다. 보고 엔진은 템플릿 문서를 입력으로 사용하고 자리 표시자를 동적으로 데이터로 채우고 결과 보고서를 생성합니다. 이 기사는 또한 Java를 사용하여 프로그래밍 방식으로 동적으로 Word 템플릿을 채워 Word 문서를 생성할 수 있는 유사한 사용 사례를 보여줍니다.

DOCX 템플릿에서 Word 문서를 생성하기 위해 Aspose.Words for Java API에서 제공하는 LINQ 보고 엔진을 사용합니다. LINQ 보고 엔진은 텍스트, 이미지, 목록, 표, 하이퍼링크 및 Word 템플릿의 책갈피에 대한 다양한 태그를 지원합니다. 이러한 태그를 포함하는 템플릿 문서는 XML, JSON 또는 CSV 데이터 소스뿐만 아니라 Java 개체에서 오는 데이터로 엔진에 의해 채워집니다. Java를 사용하여 템플릿에서 Word 문서 생성을 시작하겠습니다.

이 문서에서는 다음을 사용하여 템플릿에서 Word 문서를 생성하는 방법을 다룹니다.

  • Java 객체의 값,
  • XML 데이터 소스,
  • JSON 데이터 소스,
  • 및 CSV 데이터 소스.

Java용 Aspose.Words 설치 - Word 자동화 및 보고서 생성 API

Aspose.Words for JavaJAR를 다운로드하거나 다음 구성을 사용하여 Maven 기반 애플리케이션에 추가할 수 있습니다.

저장소:

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

의존:

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

Java 개체를 사용하여 템플릿에서 Word 문서 생성

보고서 생성을 시작하려면 먼저 템플릿을 Java 개체의 값으로 채워 Word 문서를 생성해 보겠습니다. 문서 템플릿을 정의하려면 새 Word 문서를 만들고 다음 태그를 삽입하고 DOCX 문서로 저장합니다.

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

위의 템플릿에서 “s"는 태그를 채우는 데 사용되는 Java 클래스의 개체로 처리됩니다. 두 개의 데이터 멤버가 있는 Sender라는 클래스를 만들어 보겠습니다.

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

이제 Word 템플릿을 LINQ Reporting Engine에 전달하고 Sender의 개체 값을 기반으로 Word 문서를 생성할 차례입니다. 다음은 Word 문서를 생성하는 단계입니다.

  • Document 객체를 생성하고 템플릿의 경로로 초기화합니다.
  • Sender 클래스의 객체를 생성하고 초기화합니다.
  • ReportingEngine 클래스의 객체를 생성합니다.
  • 문서 템플릿, 데이터 소스 및 데이터 소스 이름을 허용하는 ReportingEngine.buildReport() 메서드를 사용하여 보고서를 작성합니다.
  • Document.save() 메소드를 사용하여 생성된 Word 문서를 저장합니다.

다음 코드 샘플은 Java 개체의 값을 사용하여 Word 템플릿에서 Word 문서를 생성하는 방법을 보여줍니다.

// Document 객체를 생성하고 DOCX 템플릿으로 초기화합니다.
Document doc = new Document("template.docx");
// 보낸 사람 개체를 만듭니다.
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
// ReportingEngine 개체를 만듭니다.
ReportingEngine engine = new ReportingEngine();
// 보고서를 작성합니다.
engine.buildReport(doc, sender, "s");
// Word 문서로 저장합니다.
doc.save("word.docx");

산출

Java 객체가 있는 템플릿으로 워드 문서 생성

XML 데이터를 사용하여 템플릿에서 Word 문서 만들기

이제 한 단계 더 나아가 약간 복잡한 시나리오에서 XML 데이터 소스를 사용하여 Word 템플릿을 채우는 방법을 살펴보겠습니다. 다음은 Word 템플릿을 채우는 데 사용할 XML 데이터 원본입니다.

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

이 시나리오에서는 XML 데이터 원본의 여러 레코드에 대해 템플릿 문서에서 다음 태그를 사용합니다.

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

이 경우 Word 문서를 생성하기 위한 Java 코드는 동일하며 Java 개체를 데이터 소스로 전달하는 것을 제외하고 ReportingEngine.buildReport() 메서드에서 XmlDataSource 개체를 전달합니다. 다음 코드 샘플은 Java에서 XML 데이터 소스를 사용하여 문서 템플릿을 채워 Word 문서를 만드는 방법을 보여줍니다.

// Document 객체를 생성하고 DOCX 템플릿으로 초기화합니다.
Document doc = new Document("template.docx");
// XML 로드
XmlDataSource dataSource = new XmlDataSource("./datasource.xml");
// ReportingEngine 개체를 만듭니다.
ReportingEngine engine = new ReportingEngine();
// 보고서를 작성합니다.
engine.buildReport(doc, dataSource, "persons");
// Word 문서로 저장합니다.
doc.save("word.docx");

산출

Java에서 XML을 사용하여 템플릿으로 워드 문서 생성

JSON 데이터를 사용하여 템플릿에서 Word 문서 생성

이제 JSON 데이터 소스를 사용하여 DOCX 템플릿에서 Word 문서를 생성하는 방법을 살펴보겠습니다. 다음은 이 예에서 사용할 JSON 데이터입니다.

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

이 예에서는 관리자별로 그룹화된 클라이언트 목록이 포함된 Word 문서를 생성합니다. 이 시나리오에 따르면 DOCX 템플릿은 다음과 같습니다.

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

JSON 데이터 소스를 로드하기 위해 Aspose.Words는 JsonDataSource 클래스를 제공합니다. 다음 코드 샘플은 Java에서 JSON 데이터 소스를 사용하여 템플릿에서 Word 문서를 만드는 방법을 보여줍니다.

// Document 객체를 생성하고 DOCX 템플릿으로 초기화합니다.
Document doc = new Document("template.docx");
// JSON 로드
JsonDataSource dataSource = new JsonDataSource("datasource.json");
// ReportingEngine 개체를 만듭니다.
ReportingEngine engine = new ReportingEngine();
// 보고서를 작성합니다.
engine.buildReport(doc, dataSource, "managers");
// Word 문서로 저장합니다.
doc.save("word.docx");

산출

Java에서 JSON으로 워드 문서 만들기

CSV 데이터를 사용하여 템플릿에서 Word 문서 생성

마지막으로 다음 CSV 데이터 소스를 사용하여 Word 템플릿을 채워 Word 문서를 생성하는 방법을 확인해 보겠습니다.

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

이 예에서는 다음 Word 템플릿이 사용됩니다.

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

CSV 데이터 소스를 처리하기 위해 Aspose.Words는 CsvDataSource 클래스를 제공합니다. 다음 코드 샘플은 Java에서 CSV 데이터 소스를 사용하여 Word 문서를 생성하는 방법을 보여줍니다.

// Document 객체를 생성하고 DOCX 템플릿으로 초기화합니다.
Document doc = new Document("template.docx");
// CSV 로드
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
// ReportingEngine 개체를 만듭니다.
ReportingEngine engine = new ReportingEngine();
// 보고서를 작성합니다.
engine.buildReport(doc, dataSource, "persons");
// Word 문서로 저장합니다.
doc.save("word.docx");

산출

자바에서 CSV로 워드 문서 만들기

LINQ 보고 엔진에 대해 자세히 알아보기

LINQ 보고 엔진은 Java에서 모든 기능을 갖춘 Word 문서를 동적으로 생성하기 위한 광범위한 태그를 지원합니다. 이 기사에서 해당 구문과 함께 이러한 태그에 대해 자세히 알아볼 수 있습니다.

질문이나 질문이 있는 경우 Aspose.Words 포럼에 게시할 수 있습니다.

관련 기사