[java] Apache POI를 이용한 Word 문서 오류 처리

Apache POI는 Java에서 Microsoft Office의 Word, Excel, PowerPoint 등과 같은 문서를 조작하는 라이브러리입니다. 특히, Word 문서를 생성, 수정 및 읽기 작업에 사용되는 POI의 XWPF 모듈은 매우 강력하고 널리 사용됩니다. 하지만 때로는 Word 문서를 처리하는 과정에서 오류가 발생할 수 있습니다. 이번 블로그 포스트에서는 Apache POI를 이용하여 Word 문서 오류를 처리하는 방법에 대해 알아보겠습니다.

1. InvalidFormatException 오류 처리하기

Apache POI를 사용하여 Word 문서를 읽어올 때, InvalidFormatException 오류가 발생할 수 있습니다. 이 오류는 예기치 않은 문자열이나 잘못된 형식의 데이터가 문서에 포함되어 있는 경우 발생합니다. 이러한 경우에는 XWPFDocument 클래스의 open 메서드를 사용할 때 해당 예외를 처리해야 합니다.

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

public class WordDocReader {
    public static void main(String[] args) {
        try {
            XWPFDocument doc = new XWPFDocument.open(new File("document.docx"));
            // 문서 처리 로직
            doc.close();
        } catch (InvalidFormatException e) {
            // 예외 처리 로직
            e.printStackTrace();
        }
    }
}

2. NoSuchFileException 오류 처리하기

Word 문서를 열려고 할 때 존재하지 않는 파일을 지정하면 NoSuchFileException 오류가 발생합니다. 이 오류는 파일 경로가 잘못되었거나 지정된 파일이 존재하지 않는 경우 발생할 수 있습니다. 이러한 경우에는 파일의 존재 여부를 검사하고 예외를 처리해야 합니다.

import java.io.File;
import java.nio.file.NoSuchFileException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

public class WordDocReader {
    public static void main(String[] args) {
        File file = new File("document.docx");
        if (file.exists()) {
            try {
                XWPFDocument doc = new XWPFDocument.open(file);
                // 문서 처리 로직
                doc.close();
            } catch (InvalidFormatException e) {
                // 예외 처리 로직
                e.printStackTrace();
            }
        } else {
            System.out.println("파일이 존재하지 않습니다.");
        }
    }
}

3. 예외 발생 시 대체 문서 사용하기

Word 문서를 처리하는 도중 예외가 발생한다면, 대체 문서를 사용하여 작업을 계속할 수 있습니다. 예를 들어, 예외가 발생할 경우 미리 준비한 대체 문서를 읽어오거나 새로운 문서를 생성하여 작업을 수행할 수 있습니다.

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

public class WordDocProcessor {
    public static void main(String[] args) {
        String originalDocPath = "original.docx";
        String fallbackDocPath = "fallback.docx";
        try {
            XWPFDocument doc = new XWPFDocument.open(new File(originalDocPath));
            // 문서 처리 로직
            doc.close();
        } catch (InvalidFormatException e) {
            System.out.println("오류가 발생하여 대체 문서를 사용합니다.");
            try {
                XWPFDocument fallbackDoc = new XWPFDocument.open(new File(fallbackDocPath));
                // 대체 문서 처리 로직
                fallbackDoc.close();
            } catch (InvalidFormatException ex) {
                ex.printStackTrace();
            }
        }
    }
}

Apache POI를 이용하여 Word 문서를 처리하는 도중 발생하는 오류를 처리하는 방법에 대해 알아보았습니다. 이러한 오류를 적절하게 처리하여 안정적인 문서 처리 애플리케이션을 개발할 수 있습니다.