[JSP] 순수 JSP Poi 이용 엑셀업로드 기능 구현 도중 에러 정리 xls, xlsx
엑셀 업로드 기능은 우선 엑셀 파일을 그대로 서버에 업로드한 뒤에 읽어오는 형식입니다.
업로드 과정부터 세세하게 포스팅 하진 않을거고, 발생하였던 에러에 관해서만 간단하게 요약하려고 합니다.
우선 xls 와 xlsx 차이는 버전이고, 2003 , 2007 뭐 이렇습니다.
문제점은 xls 파일은 잘만 올라가는데 xlsx 는 자꾸 올라가지않고 에러가 뜨는 경우가 있어서 에러 분석후에
결국 jar 파일이 문제였다는걸 확인후에 jar 파일 대체후 정상가동 확인할수 있었습니다.
2003 xls 일때 JSP 소스
<%@page import="org.apache.poi.hssf.usermodel.*" %>
... 생략
#xlsFile은 업로드된 엑셀파일의 절대경로
HSSFWorkbook workbook = new HSSFWorkbook(xlsFile);
Sheet sheet = workbook.getSheetAt(0);
int xlsRows = sheet.getPhysicalNumberOfRows();
for(int rownum=1 ; rownum < xlsRows; rownum++){
Row xlsRow = sheet.getRow(rownum);
out.println(xlsRow.getCell(0).toString() + "<br>");
}
2007 xlsx 일때 JSP 소스
<%@page import="org.apache.poi.xssf.usermodel.*"%>
... 생략 ...
XSSFWorkbook workbook = new XSSFWorkbook(xlsFile);
Sheet sheet = workbook.getSheetAt(0);
int xlsRows = sheet.getPhysicalNumberOfRows();
for(int rownum=1 ; rownum < xlsRows; rownum++){
Row xlsRow = sheet.getRow(rownum);
out.println(xlsRow.getCell(0).toString() + "<br>");
}
사실 첫줄에 XSSF 냐 HSSF 냐만 다르지 나머지는 동일합니다
받아오는 페이지에서 확장자로 if else 돌려서 가동해도 무방할듯 하네요.
/usr/local/tomcat/shared/lib 안에 아래와 같은 jar 파일들을 사용하였으며 문제가 되었던 jar 파일이 바로
xmlbeans-5.1.6.jar 였습니다.
* 아래 jar 파일들은 모두 정상가동되는 파일들입니다.
2003 버전 읽어오는 HSSF 는 poi-3.9.jar 안에 있으며,
2007 을 읽어올수있는 XSSF 는 poi-ooxml-3.9.jar 안에 있었는데 ooxml jar 파일 안에 XSSFWorkbook.class 를 까보니
xmlbeans 어쩌고가 import 되있길래 혹시나 싶어서 xmlbeans 를 열어봤더니 손상된 파일이라며 열리지 않았습니다.


그래서 새롭게 xmlbeans 5.1.6 새 파일을 다운받아 서버에 업로드 시킨 후에 톰캣서버를 재시작하니 정상적으로 가동이 되는것을 확인하였습니다.
문제였던 jar 파일이 용량도 좀 더 작더군요. 왜 jar 파일이 손상되는진 이해가 되지않는다만 ..
여튼 삽질후에 해결해서 다행입니다.