[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 파일의 차트를 다양한 방식으로 수정할 수 있습니다.