본문 바로가기

etc

apache api 사용(kotlin)

영어 단어를 읽어올 파일로써 처음에는 csv파일을 사용하고자 하였다. 하지만 csv파일은 일반적인 사람들은 잘 들어보지 못한 파일 확장자이기에 범용성이 너무 떨어진다고 생각이 들어서 조금 더 대중적인 파일을 사용하는 앱을 개발하고자 마음을 먹었다. 따라서 엑셀파일을 사용하기로 했다. 액셀 파일을 사용하기 위해서는 apache api를 사용해야한다.

엑샐 파일의 확장자가 xls이지만 xlsx를 비롯하여 여러가지 다양한 확장자가 존재하였다. 엑셀의 버전에 따라 지원하는 클래스의 명이 다르기 때문에 해당 사이트에서 사용법을 참고해야했다.

https://poi.apache.org/

 

Apache POI - the Java API for Microsoft Documents

Apache POI - the Java API for Microsoft Documents Project News 20 January 2021 - POI 5.0.0 available The Apache POI team is pleased to announce the release of 5.0.0. This release features full JPMS support, updated ECMA-376 OOXML schemas, various rendering

poi.apache.org

build.gradlev(:app) 파일의 dependencies{} 안에

 

implementation 'org.apache.poi:poi-ooxml:4.0.1'

or

implementation 'org.apache.poi:poi:4.0.1'

 

를 추가하면 apache api 사용이 가능하다.

하지만 앱을 작동하는데 이런 오류가 발생했다.

 

java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLStreamReader;

 

구글링을하여 해당 에러를 해결하기 위해서는 

https://stackoverflow.com/questions/61966321/how-to-fix-xmlbean-error-in-apache-poi-xssf

 

How to fix XMLbean Error in Apache Poi XSSF?

i tried to make XSSF (.xlsx) in android, i still use example program,when i run it , it show error java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLStreamReader; ...

stackoverflow.com

implementation 'javax.xml.stream:stax-api:1.0'

 

을 추가해주어야 한다는 것을 알 수 있었다.

 

이후 workbook 객체를 생성하고 앱을 시뮬레이션 한 결과 정상적으로 동작을 하였다.

 

+에러 사항 추가

android studio 에서 해당 파일을 만들고 쓰는 것은 위의 방법을 토대로 해결하였지만 기존의 파일을 읽는 과정에서 오류가 발생하였다.

 

원인은 apache poi api 의 상위 버전과 호환이 안되는 것이었다. 따라서 해당 api의 버전을 낮추어 주면 해결이 가능하였다.

'etc' 카테고리의 다른 글

리눅스 명령어 모음  (0) 2023.04.17
코테 알고리즘 실수 목록  (0) 2023.02.23
REST 란 무엇인가?  (0) 2021.11.08
해쉬 충돌  (0) 2021.08.10
기능 문서  (0) 2021.06.22