[java] Apache POI를 이용한 Word 문서 변경

Apache POI는 Java에서 Microsoft Office 파일 형식을 조작하는 라이브러리입니다. 이 라이브러리를 사용하면 Word, Excel, PowerPoint 등의 파일을 생성, 수정, 조회할 수 있습니다. 이번 글에서는 Apache POI를 사용하여 Word 문서를 변경하는 방법에 대해 알아보겠습니다.

1. Apache POI 라이브러리 추가하기

먼저, Apache POI 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같은 의존성을 추가합니다.

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

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같은 의존성을 추가합니다.

implementation 'org.apache.poi:poi:4.1.2'

의존성을 추가한 후, 프로젝트를 빌드해주세요.

2. Word 문서 열기

Apache POI를 사용하여 Word 문서를 열기 위해서는 XWPFDocument 클래스를 사용합니다. 다음은 Word 문서를 열고 내용을 출력하는 예제 코드입니다.

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

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

public class WordDocumentReader {

    public static void main(String[] args) {
        try (FileInputStream fileInputStream = new FileInputStream("example.docx");
             XWPFDocument document = new XWPFDocument(fileInputStream)) {
            for (XWPFParagraph paragraph : document.getParagraphs()) {
                System.out.println(paragraph.getText());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서는 example.docx 파일을 열고, 문단별로 내용을 출력합니다. 파일 경로는 실제 파일의 경로로 수정해야 합니다.

3. Word 문서 변경하기

Apache POI를 사용하여 Word 문서를 변경하는 가장 일반적인 작업은 텍스트를 수정하는 것입니다. 다음은 Word 문서에서 특정 텍스트를 찾아 변경하는 예제 코드입니다.

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

    public static void main(String[] args) {
        try (FileInputStream fileInputStream = new FileInputStream("example.docx");
             XWPFDocument document = new XWPFDocument(fileInputStream)) {
            for (XWPFParagraph paragraph : document.getParagraphs()) {
                replaceText(paragraph, "oldText", "newText");
            }
            
            try (FileOutputStream fileOutputStream = new FileOutputStream("modified.docx")) {
                document.write(fileOutputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    private static void replaceText(XWPFParagraph paragraph, String searchText, String replaceText) {
        String text = paragraph.getText();
        if (text.contains(searchText)) {
            text = text.replace(searchText, replaceText);
            paragraph.removeRun(0);
            paragraph.createRun().setText(text);
        }
    }
}

위 코드에서는 example.docx 파일을 열고, 각 문단을 순회하면서 “oldText”를 포함하는 텍스트를 “newText”로 변경합니다. 변경된 문서는 modified.docx 파일에 저장됩니다.

결론

Apache POI를 사용하면 Java에서 Word 문서를 쉽게 변경할 수 있습니다. 이번 글에서는 Apache POI를 이용하여 Word 문서를 열고 수정하는 방법에 대해 알아보았습니다. Apache POI의 더 많은 기능과 사용법은 공식 문서를 참조하시기 바랍니다.