poi-object-mapper 라이브러리를 사용하여 엑셀 데이터 바인딩하기
- 도입배경
: 업체에서 256개의 열의 엑셀을 떨어뜨려 달라고 함. (하드코딩으로는 도저히 관리가 안 될듯 함)
- 도입과정
1) https://github.com/millij/poi-object-mapper 주소를 참고
2) 스프링이 아닌 회사 자체 프레임워크를 기반으로 개발하고 있기 때문에 maven이 아닌 jar파일 다운로드
(https://jar-download.com/artifact-search/poi-object-mapper)
3) 해당 jar파일 commit
4) 이슈사항 발생
4-1) 기존 poi 버전(3.10)과 poi-object-mapper의 poi버전(3.17) 충돌 발생
4-2) 기존 jar파일의 확장자를 jar_ 처리 후 3.17로 기존 엑셀다운로드 확인
-> But... 기존의 엑셀다운로드 기능이 3.17 버전에서는 오류 발생
-> 기존 거를 수정하기에는 공통단을 건드려야 하는 부분이라 공수가 상당히 큼
-> 여기서 라이브러리 사용은 포기....
5) 이왕 jar파일 다운 받아본 거 돌려보기라도 하자.!
6) 3.10 jar 확장자를 jar_ 처리
7) 3.17로 테스트 해보기.
8) Unsupported major.minor version 51.0 익셉션 발생
9) 현재 모듈은 openJDK 1.6 으로 WAS 실행하고 있음. openJDK 1.8로 WAS설정 후 재기동 테스트
10) java.lang.ClassNotFoundException: org.dom4j.Namespace 익셉션 발생
11) dom4j.jar파일 commit
12) 정상동작 확인
- 출력소스
List people = new ArrayList<Person>(); people.add(new Person(20,"김똥개")); people.add(new Person(25,"홍길동")); people.add(new Person(29,"김철수")); String CHARSET = "UTF-8"; response.setContentType("application/vnd.ms-excel;charset="+CHARSET); String userAgent = request.getHeader("User-Agent"); if (userAgent.indexOf("MSIE 5.5") > -1) { // MS IE 5.5 이하 response.setHeader("Content-Disposition", "filename=" + URLEncoder.encode(fileName, "UTF-8") + ";"); } else if (userAgent.indexOf("MSIE") > -1) { // MS IE (보통은 6.x 이상 가정) response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8") + ";"); } else if (userAgent.indexOf("Trident") > -1) { // MS IE 11 fileName = URLEncoder.encode(fileName,"UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";"); } else { // 모질라나 오페라 response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes(CHARSET), "latin1") + ";"); } SpreadsheetWriter writer = new SpreadsheetWriter(response.getOutputStream()); writer.addSheet(Person.class,people); out.clear(); out = pageContext.pushBody(); writer.write();
- 엑셀 출력 결과
- 결론
나중에 이 라이브러리를 사용하게 된다면, 스타일 세팅하는 부분 재확힌 해보기.
이제 WAS jdk 설정 / jar 설정 / 소스 수정한 거 모두 원상복구 해놓자...........................................ㅎㅎ;;
'경험, 느낀 점' 카테고리의 다른 글
개발/운영 설정파일 개념. (0) | 2019.01.31 |
---|