[java] Apache POI를 이용한 Word 테이블 생성

Apache POI는 Java 언어로 Microsoft Office 파일을 읽고 쓰기 위한 라이브러리입니다. 이번에는 Apache POI를 사용하여 Word 문서에 테이블을 생성하는 방법에 대해 알아보겠습니다.

Apache POI 설치

먼저 Apache POI를 설치해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음의 의존성을 추가합니다.

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

Maven을 사용하지 않는 경우, Apache POI 다운로드 페이지에서 라이브러리를 직접 다운로드하여 프로젝트에 추가해야 합니다.

Word 테이블 생성하기

import org.apache.poi.xwpf.usermodel.Document;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.TableCell;
import org.apache.poi.xwpf.usermodel.TableRow;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFRun;

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

public class WordTableExample {

    public static void main(String[] args) {
        XWPFDocument document = new XWPFDocument();

        try (FileOutputStream out = new FileOutputStream("table_example.docx")) {
            // 테이블 생성
            XWPFRun run = document.createParagraph().createRun();
            run.setText("테이블 예제");
            run.setBold(true);
            run.setFontSize(16);
            run.addBreak();

            XWPFTable table = document.createTable(3, 3); // 행과 열 개수 지정

            // 셀 내용 설정
            for (int row = 0; row < 3; row++) {
                for (int col = 0; col < 3; col++) {
                    XWPFTableCell cell = table.getRow(row).getCell(col);
                    cell.setText("셀 " + (row + 1) + "-" + (col + 1));
                }
            }

            // 테이블 스타일 설정
            table.setTableAlignment(TableRowAlign.CENTER);
            table.getCTTbl().getTblPr().unsetTblBorders();

            document.write(out);
            System.out.println("테이블이 성공적으로 생성되었습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드는 Word 문서를 생성하고 테이블을 추가하는 예제입니다. XWPFDocument 클래스를 사용하여 Word 문서를 생성하고, 테이블을 추가하기 위해 XWPFTable 클래스를 사용합니다. document.createTable(rows, cols) 메서드를 호출하여 행과 열 개수를 지정하여 테이블을 생성할 수 있습니다.

table.getRow(row).getCell(col)을 통해 각 셀의 인스턴스를 얻고, cell.setText(content)를 호출하여 셀 내용을 설정할 수 있습니다.

테이블의 스타일을 설정하기 위해 setTableAlignment() 메서드를 사용할 수 있으며, TableRowAlign 열거형을 통해 가로 정렬을 지정할 수 있습니다.

테이블의 경계선을 제거하기 위해 getTable()을 호출하고, 이후 getTblPr().unsetTblBorders()를 호출하여 경계선을 제거할 수 있습니다.

코드를 실행하면 table_example.docx 파일이 생성되고, 해당 파일을 열면 테이블이 포함된 Word 문서가 나타납니다.

이상으로 Apache POI를 이용하여 Word 테이블을 생성하는 방법에 대해 알아보았습니다. Apache POI의 다양한 기능을 살펴보고, 자신의 프로젝트에 적용해 보세요!

참고 자료