[java] Apache POI를 사용하여 Excel 파일의 차트 수정하기

Apache POI는 자바로 Excel 파일을 처리하는 데 사용되는 라이브러리입니다. 이 라이브러리를 사용하여 Excel 파일의 차트를 수정하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 추가하기

먼저, Apache POI를 사용하기 위해서는 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가합니다.

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

Gradle을 사용하는 경우, build.gradle 파일에 다음의 의존성을 추가합니다.

implementation 'org.apache.poi:poi:4.1.2'

Excel 파일 열기

먼저, Apache POI를 사용하여 Excel 파일을 엽니다. 아래의 코드를 참고하세요.

import org.apache.poi.ss.usermodel.*;

File file = new File("파일경로");
Workbook workbook = WorkbookFactory.create(file);
Sheet sheet = workbook.getSheetAt(0);

파일 경로는 수정하고자 하는 Excel 파일의 경로를 지정해주어야 합니다.

차트 정보 가져오기

수정하고자 하는 차트의 정보를 가져와야 합니다. 아래의 코드는 첫 번째 차트의 데이터 범위를 가져오는 예시입니다.

Drawing<?> drawing = sheet.getDrawingPatriarch();
Chart chart = drawing.getCharts().get(0);

ChartAxis[] axis = chart.getAxis();
ChartDataSource<?>[] dataSources = chart.getChartSeries().get(0).getCategoryAxisData();

CellRangeAddress range = ((CellRangeAddress) dataSources[0].getSelectRange());
int firstRow = range.getFirstRow();
int lastRow = range.getLastRow();

차트 데이터 수정하기

수정하고자 하는 차트의 데이터를 변경할 수 있습니다. 아래의 코드는 첫 번째 시리즈의 데이터를 변경하는 예시입니다.

Series series = chart.getChartSeries().get(0);

CellRangeAddress valuesRange = ((CellRangeAddress) series.getValuesData().getSelectRange());
int firstDataCol = valuesRange.getFirstColumn();
int lastDataCol = valuesRange.getLastColumn();

for (int i = firstDataCol; i <= lastDataCol; i++) {
    Cell cell = sheet.getRow(firstRow).getCell(i);
    double newValue = // 새로운 값 설정
    cell.setCellValue(newValue);
}

적절한 값을 설정하여 데이터를 변경할 수 있습니다.

Excel 파일 저장하기

마지막으로, 변경된 Excel 파일을 저장해야 합니다. 아래의 코드를 참고하세요.

FileOutputStream fos = new FileOutputStream("새로운_파일경로");
workbook.write(fos);
fos.close();

변경된 Excel 파일은 “새로운_파일경로”에 저장됩니다.

결론

위의 예시를 참고하여 Apache POI를 사용하여 Java로 Excel 파일의 차트를 수정하는 방법을 알아보았습니다. 이를 통해 Excel 파일의 차트를 다양한 방식으로 수정할 수 있습니다.