[java] Apache POI를 이용한 Word 문서 중복 제거

Apache POI는 Java에서 Microsoft Office 형식의 문서를 다루는 데 사용되는 인기있는 라이브러리입니다. 이번 블로그 포스트에서는 Apache POI를 사용하여 Word 문서에서 중복된 내용을 제거하는 방법에 대해 알아보겠습니다.

1. Apache POI 설치

먼저 Apache POI를 사용하기 위해 Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 프로젝트에 Apache POI를 추가해야 합니다. 아래는 Maven을 사용하는 경우 pom.xml 파일에 추가해야 하는 내용입니다.

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

2. 중복 제거 기능 구현

Word 문서에서 중복된 내용을 제거하기 위해 다음과 같은 단계를 따라갑니다.

2.1. Word 문서 열기

Apache POI에서는 XWPFDocument 클래스를 사용하여 Word 문서를 열 수 있습니다. 아래의 예제 코드를 참고해보세요.

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

public class WordDuplicateRemover {

    public static void main(String[] args) {
        try {
            FileInputStream file = new FileInputStream(new File("input.docx"));
            XWPFDocument document = new XWPFDocument(file);
            // 문서의 내용을 처리하는 로직을 작성하세요.
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.2. 문서 내용 처리

중복된 내용을 제거하기 위해 문서의 모든 단락을 순회하고 중복을 확인해야 합니다. 아래의 예제 코드는 중복 제거를 위한 로직을 보여줍니다.

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

import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class WordDuplicateRemover {

    public static void main(String[] args) {
        try {
            FileInputStream file = new FileInputStream(new File("input.docx"));
            XWPFDocument document = new XWPFDocument(file);
            
            // 중복 제거를 위한 Set을 생성합니다.
            Set<String> uniqueContentSet = new HashSet<>();
            
            // 문서의 모든 단락을 순회하며 중복 여부를 확인합니다.
            List<XWPFParagraph> paragraphs = document.getParagraphs();
            for (XWPFParagraph paragraph : paragraphs) {
                String content = paragraph.getText();
                if (!uniqueContentSet.contains(content)) {
                    // 중복되지 않은 내용을 출력하거나 다른 작업을 수행합니다.
                    System.out.println(content);
                    
                    // Set에 내용을 추가합니다.
                    uniqueContentSet.add(content);
                }
            }
            
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 문서의 모든 단락을 순회하며 중복된 내용을 제거하는 예제입니다. 중복되지 않은 내용을 출력하거나 다른 작업을 수행할 수 있습니다.

3. 결과 확인

위의 예제 코드를 실행하면 Word 문서에서 중복된 내용이 제거되고 중복되지 않은 내용이 출력될 것입니다. 이를 통해 Apache POI를 사용하여 Word 문서에서 중복을 제거하는 방법을 알아보았습니다.

참고 자료