Hayden's Archive

[Java] 자바에서 Apache POI로 엑셀 파일 읽기 & 쓰기 본문

Study/Java & Kotlin

[Java] 자바에서 Apache POI로 엑셀 파일 읽기 & 쓰기

_hayden 2020. 10. 21. 11:19

관련 포스팅 : 파이썬에서 파이썬에서 openpyxl로 엑셀 읽기 & 쓰기

 

[Python] 파이썬에서 openpyxl로 엑셀 읽기 & 쓰기

참고 : 파이썬 엑셀 쓰기 라이브러리 비교 참고 : 큰 엑셀 파일 내용 읽기 파이썬으로 엑셀 파일을 쓸 수 있는 라이브러리는 많다. 그 중에서도 가장 많이 쓰이는 openpyxl 라이브러리를 써볼까 한��

hayden-archive.tistory.com

 

xls, xlsx 와 같은 엑셀 파일을 파이썬으로 입출력하는 것은 실습했는데

스프링 프로젝트에서 쓰려면 자바로도 입출력하는 것이 필요하다.

그래서 Apache POI를 사용해서 자바로도 실습해보겠다.

 

poi.apache.org/index.html

위 공식 홈페이지에서 다운 받을 수 있다.

 

하지만 난 스프링 프로젝트에서 써야 하므로 Maven으로 의존성을 추가해보겠다.

다음 코드를 pom.xml 에 추가한다.

<!-- Apache POI -->
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>4.1.2</version>
</dependency>

 

코드는 다음 블로그를 참고하였다.

javaslave.tistory.com/78

javaslave.tistory.com/79

 

코드를 분석하면서 그림을 그려보았는데 원리를 그림으로 요약해보면 간단히 다음과 같이 표현할 수 있다.

( 참고 문서 : https://poi.apache.org/apidocs/4.1 )

 

나는 Spring Framework에서 구현했고, 읽기와 쓰기가 모두 가능하도록 합쳤다.

또 가장 최신 버전인 Apache POI 4.1.2를 사용하면서 적용되지 않는 부분이 생겨 수정했다. 

예컨대 HSSFCell.CELL_TYPE_FORMULA는 FORMULA만 써줘야 에러가 나지 않는다.

 

또 OS마다 파일 구분자가 다르기 때문에 File Separator를 사용했다.

참고 : hoonjeck.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%8C%8C%EC%9D%BC%EA%B5%AC%EB%B6%84%EC%9E%90-Fileseparator-%EC%82%AC%EC%9A%A9

 

테스트 완료한 풀 코드는 깃허브에 올렸다.

github.com/devyeony/file-input-output/tree/main/xlsx/java/apachePOI

 

devyeony/file-input-output

Contribute to devyeony/file-input-output development by creating an account on GitHub.

github.com