일단 POI 라이브러리를 프로젝트에 적용하는 것 부터 되게 오래 걸렸다.
외부 라이브러리라서 세팅 들어가서 모듈 추가하고.. 되게 복잡하고 따라하면 뜻대로
안되서 굉장히 고생했었다..
그러다가 그냥 프로젝트->app 오른클릭 -> New -> Directory -> 디렉토리명은 lib
로 lib 파일을 만들어주고 거기에 기본적인 poi.jar와 ooxml.jar를 복사, 붙여넣기 해서 추가해줬다.
저거면 충분한 줄 알았는데 생각보다 필요한 라이브러리들이 많아 많은 error를 접했다.
먼저, Unable to instantiate activity ComponentInfo 에러이다.
외부 라이브러리를 추가하자마자 Run 했을 때 마주했다.
아래 코드를 추가해서 해결하였다. 참고>https://webnautes.tistory.com/1320
//Erro1
/*
Unable to instantiate activity ComponentInfo
새로운 라이브러리를 프로젝트에 추가했을 때 자바 버전이 맞지 않아서 발생
*/
//해결방법
//build.gradle(app)에 아래 코드 추가
android{
...
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
}
2번째로 마주한 에러. Ljavax/xml/stream/XMLStreamReaderjava.lang.noclassdeffounderror failed resolution of ljavax/xml/stream/xmlstreamreader이거 때문에 또 한참 헤맸다... 검색해보면 stax-api를 추가하라고 하는데, 해결방법을 못찾았다...아직도 .xlsx 파일 작성하려고만 하면 이 에러가 뜬다..... 왜이러지..ㅠㅠ(200427_18:57)
stax-api 어디서 구해야할지 막막했는데
build.gradle의 dependencies{}에
compile group: 'stax', name: 'stax-api', version: '1.0.1' 입력하여 드디어 해결했다.
(200427_19:4)
참고>https://stackoverflow.com/questions/19427666/android-studio-importing-simple-xml-library
3번째로 마주한 에러. java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlOptions
2번째 에러를 바로 해결하니 또 다시 마주친 에러들.
xmlbeans 또한 POI로 제공해주는 라이브러리 파일이므로 다음과 같은 경로에 들어가 라이브러리를 추가해줬다.
나같은 경우, 그냥 두개 전부 다 프로젝트에 추가했다.
xmlbeans-3.1.0.jar
curvesapi-1.06.jar
참고 > https://stackoverflow.com/questions/26024193/java-lang-classnotfoundexception-org-apache-xmlbeans-xmloptions
4번째. 이제 충분하게 라이브러리들을 포함시킨 거 같은데 또 에러가 발생했다.
도대체 또 뭐가 문제인가 싶어 찾아봤는데,
라이브러리가 또 필요한 것 같았다,
dom4j 라이브러리가 필요한가 싶었지만 POI 라이브러리에 포함되어 있지 않아
직접 다운 받아야 하나.. 싶었는데 굳이 그럴 필요 없이
다운받은 POI zip 파일을 활용하면 되었다.
아파치 공식 문서에 보면,
각 라이브러리들의 전제조건(Prerequisites), 즉 사용할때 필요한 라이브러리들을 기술해 놨었기 때문에
저거 대로 모두 다운받고 임포트 해주면 되었던... ㅠㅠ
poi
poi-ooxml-schemas
commons-compress
SparseBitSet
commons-collections4
commons-math
xmlbeans
그래서 위 경로로 이동해 나머지 부족한 라이브러리들을 추가했다.
그러고나니 무사히 엑셀(.xls)파일을 저장할 수 있었다.
사용법
그러나 아직도 .xlsx 파일은 저장이 안된다.
그래서 여러가지 방법을 시도해봤지만 또 이런 에러들을 만났다.
1#OOXML file structure broken/invalid - no core document found!
2# java.lang.ClassCastException: java.io.FileOutputStream cannot be cast to org.apache.poi.openxml4j.opc.OPCPackage
3#
org.apache.poi.EmptyFileException: The supplied file was empty (zero bytes long)
-----19:04
위에 기술한 해결방법으로 드디어 .xlsx 파일도 쓸 수 있게 되었음.
사용방법은 다음과 같다.
.xlsx 가 좋을지 .xls로 작성할지 고민이 있다.
https://github.com/eunnjji/Save_androidTest < 작성한 코드.
'Study > Android' 카테고리의 다른 글
Toast메시지 오류 (0) | 2020.04.21 |
---|---|
EditText 에 입력 후 키보드 내리기 (0) | 2020.04.21 |
error running 'app' default activity not found (0) | 2020.04.04 |
댓글