Microsoft Word는 많은 사용자들에게 사무 작업을 위한 기본 도구로 널리 사용되고 있습니다. Java 프로그램에서 Word 문서를 조작하고 변경 이력을 관리해야 할 때가 있는데, 이때 Apache POI 라이브러리를 사용할 수 있습니다.
Apache POI는 Java에서 Microsoft Office 파일 형식을 다룰 수 있는 라이브러리로서, Word, Excel, PowerPoint 등의 다양한 파일들을 조작할 수 있습니다. 이 중에서도 Word 문서를 변경하고 이력을 관리하는 방법을 알아보겠습니다.
1. 의존성 추가
먼저 Apache POI를 사용하기 위해 Maven이나 Gradle 프로젝트에 의존성을 추가해야 합니다. Maven을 사용하는 경우 pom.xml
파일에 다음과 같이 의존성을 추가합니다.
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
Gradle을 사용하는 경우 build.gradle
파일에 다음과 같이 의존성을 추가합니다.
dependencies {
implementation 'org.apache.poi:poi:4.1.2'
}
의존성을 추가한 후 프로젝트를 빌드하면 Apache POI 라이브러리를 사용할 수 있는 환경이 준비됩니다.
2. Word 문서 열기
Apache POI를 사용하여 Word 문서를 열려면 XWPFDocument
클래스를 사용합니다. 다음은 예제 코드입니다.
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.FileInputStream;
import java.io.IOException;
public class WordDocument {
public static void main(String[] args) {
try {
FileInputStream file = new FileInputStream("path/to/your/document.docx");
XWPFDocument document = new XWPFDocument(file);
// 문서 조작 작업 수행
document.close();
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
XWPFDocument
객체를 생성하고, 파일을 열기 위해 FileInputStream
을 사용합니다. 경로는 실제 문서 파일의 경로로 변경해야 합니다.
3. 문서 변경
Word 문서를 변경하기 위해서는 주로 XWPFParagraph
와 XWPFRun
클래스를 사용합니다. XWPFParagraph
은 문단을 나타내고, XWPFRun
은 문단 내의 텍스트를 나타냅니다. 다음은 예제 코드입니다.
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
// ...
// 문단 리스트 가져오기
List<XWPFParagraph> paragraphs = document.getParagraphs();
// 모든 문단에 대해 변경 작업 수행
for (XWPFParagraph paragraph : paragraphs) {
// 특정 텍스트를 변경할 경우
if (paragraph.getText().contains("oldText")) {
// 텍스트 변경
String newText = paragraph.getText().replace("oldText", "newText");
paragraph.setText(newText);
}
// 텍스트를 굵게 변경할 경우
for (XWPFRun run : paragraph.getRuns()) {
run.setBold(true);
}
}
XWPFDocument
객체에서 getParagraphs()
메서드를 호출하여 모든 문단을 가져올 수 있습니다. 다음으로, 각 문단에 대해 변경 작업을 수행하면 됩니다. 특정 텍스트를 변경하는 경우 getText()
메서드로 현재 텍스트를 가져온 후, replace()
메서드를 사용하여 변경합니다. 텍스트를 굵게 변경하는 경우 setBold()
메서드를 사용하여 글꼴 속성을 변경합니다.
4. 변경된 문서 저장
Word 문서를 변경한 후에는 변경된 내용을 저장해야 합니다. 저장하기 위해서는 FileOutputStream
을 사용하여 새로운 파일에 변경된 내용을 쓰는것이 일반적입니다.
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class WordDocument {
public static void main(String[] args) {
try {
FileInputStream file = new FileInputStream("path/to/your/document.docx");
XWPFDocument document = new XWPFDocument(file);
// 문서 조작 작업 수행
FileOutputStream out = new FileOutputStream("path/to/your/modified_document.docx");
document.write(out);
document.close();
file.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileOutputStream
을 새로운 파일 경로로 초기화한 다음, write()
메서드를 사용하여 변경 내용을 쓸 수 있습니다.
결론
Apache POI를 사용하면 Java로 Word 문서를 변경하고, 변경 내용을 관리할 수 있습니다. 위의 예제 코드를 참고하여 필요에 맞게 Word 문서를 조작해보세요. Apache POI의 다양한 클래스와 메서드를 이용하여 복잡한 작업도 수행할 수 있습니다. 자세한 내용은 Apache POI 공식 문서를 참고하시기 바랍니다.