[java] Apache POI를 이용한 Word 차트 생성

Apache POI는 Java에서 Microsoft Office 파일을 다룰 수 있는 라이브러리입니다. 이 라이브러리를 사용하여 Word 문서에 차트를 생성하는 방법을 알아보겠습니다.

1. Maven 의존성 추가하기

먼저, Apache POI를 사용하기 위해 Maven 프로젝트의 pom.xml 파일에 다음 의존성을 추가합니다.

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

2. Word 차트 생성하기

아래의 예제 코드는 Apache POI를 사용하여 Word 문서에 Bar 차트를 생성하는 코드입니다.

import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;

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

public class WordChartExample {

    public static void main(String[] args) {
        try (XWPFDocument document = new XWPFDocument()) {
            // 문서에 차트를 추가할 도표 객체 생성
            XWPFChart chart = document.createChart();

            // 차트 타입 설정
            chart.createBarChart();

            // 차트 데이터 생성
            XDDFChartData data = chart.createData(ChartTypes.BAR);
            XDDFDataSource<String> categories = XDDFDataSourcesFactory.fromArray(new String[] { "Apple", "Banana", "Orange" });

            // 카테고리 추가
            XDDFNumericalDataSource<Double> values = XDDFDataSourcesFactory.fromArray(new Double[] { 10.0, 15.0, 8.0 });
            XDDFChartData.Series series = data.addSeries(categories, values);

            // 도표에 카테고리 및 값을 설정
            data.setVaryColors(true);
            series.setTitle("Fruits", null);
            chart.plot(data);

            // 문서에 차트 추가
            XWPFParagraph paragraph = document.createParagraph();
            XWPFRun run = paragraph.createRun();
            XmlCursor cursor = paragraph.getCTP().newCursor();
            cursor.toEndToken();
            chart.getCTChartSpace().newCursor().moveXml(cursor);
            run.addBreak();
            chart.getCTChartSpace().newCursor().moveXml(cursor);
            run.addBreak();

            // 생성된 Word 파일 저장
            try (FileOutputStream out = new FileOutputStream("chart_example.docx")) {
                document.write(out);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드의 주석에 따라서 차트 타입, 카테고리, 값 등을 설정할 수 있습니다. 마지막으로 생성된 Word 파일은 chart_example.docx로 저장됩니다.

참고 자료