[java] Apache POI를 이용한 Word 문서 템플릿

Apache POI는 Java에서 Microsoft Office의 문서를 다루는 라이브러리입니다. 이번 블로그에서는 Apache POI를 사용하여 Word 문서 템플릿을 만드는 방법에 대해 알아보겠습니다.

1. Apache POI 라이브러리 추가

먼저 프로젝트에 Apache POI 라이브러리를 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음 의존성을 추가합니다:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.1</version>
</dependency>

Gradle을 사용한다면 build.gradle 파일에 다음 의존성을 추가합니다:

implementation 'org.apache.poi:poi:4.1.1'

2. Word 템플릿 파일 만들기

먼저 Word 템플릿 파일을 준비해야 합니다. 일반적으로 .docx 확장자를 가진 파일을 사용하며, 템플릿의 일부 부분을 변하지 않는 고정된 내용으로 작성합니다. 템플릿에는 변경될 부분을 나타내는 특정 키워드를 포함할 수도 있습니다. 예를 들어, {name}과 같은 키워드를 사용하여 이름을 동적으로 변경할 수 있습니다.

3. Apache POI를 사용하여 템플릿 채우기

아래는 Apache POI를 사용하여 템플릿 파일을 열고 내용을 변경하는 예제 코드입니다.

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class WordTemplate {
    public static void main(String[] args) {
        try {
            // 템플릿 파일 열기
            XWPFDocument doc = new XWPFDocument(new FileInputStream("template.docx"));

            // 특정 키워드를 찾아 변경
            for (XWPFParagraph paragraph : doc.getParagraphs()) {
                if (paragraph.getText().contains("{name}")) {
                    String newText = paragraph.getText().replace("{name}", "John Doe");
                    paragraph.setText(newText);
                }
            }

            // 변경된 내용을 새로운 파일로 저장
            FileOutputStream out = new FileOutputStream("output.docx");
            doc.write(out);
            out.close();

            System.out.println("템플릿이 성공적으로 채워졌고, 새로운 파일이 생성되었습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서는 template.docx 파일을 열고 {name} 키워드를 찾아 "John Doe"로 변경한 후, output.docx 파일에 저장합니다.

4. 실행 결과

위 코드를 실행하면 template.docx 파일을 기반으로 output.docx 파일이 생성됩니다. output.docx 파일을 열어보면 {name} 키워드가 "John Doe"로 대체된 것을 확인할 수 있습니다.

마무리

이렇게 Apache POI를 사용하여 Word 문서 템플릿을 만들 수 있습니다. 추가로, Apache POI는 다양한 기능을 제공하므로 문서의 다양한 요소를 프로그래밍적으로 제어할 수 있습니다. 더 자세한 정보는 Apache POI 공식 문서를 참고하세요.