2011-12-21 11 views
1

웹 응용 프로그램에서 HSSF를 사용하여 사용자가 업로드 한 엑셀 파일을 읽습니다.
응용 프로그램은 struts 기반이며 struts.upload.FormFile 객체의 입력 스트림은 POIFSFileSystem 생성자에 전달됩니다. 엑셀 파일을 읽는 중 오류가 발생했습니다.

java.lang.reflect.InvocationTargetException: 
java.lang.ArrayIndexOutOfBoundsException: 11 
     at 
org.apache.poi.util.LittleEndian.getNumber(LittleEndian.java(Inlined 
Compiled Code)) 
     at 
org.apache.poi.util.LittleEndian.getShort(LittleEndian.java(Compiled 
Code)) 
     at 
org.apache.poi.hssf.record.MulRKRecord.fillFields(MulRKRecord.java:153) 
     at 
org.apache.poi.hssf.record.Record.fillFields(Record.java:90) 
     at 
org.apache.poi.hssf.record.Record.<init>(Record.java:55) 
     at 
org.apache.poi.hssf.record.MulRKRecord.<init>(MulRKRecord.java:65) 

그러나 HSSF를 사용하여 독립 실행 형 테스트 클래스는 아무 문제없이 같은 파일을 구문 분석 : 특정 Excel 파일을 구문 분석 할 때
나는 다음과 같은 오류를 얻고있다. POI ver 2.5를 사용하고 있습니다. 사람이 비슷한 문제가 발생했습니다

:-(에게 디버깅을 시작 위치를

나도 몰라? 저를주세요 알고.

+1

예, 비슷한 유형의 문제가 발생했습니다. null 값을 가진 셀에서 숫자 데이터를 읽으려고했기 때문입니다. 오류로 인해 코드가 존재하지 않거나 null 값을 가진 셀을 읽으려고합니다. 셀 값을 파싱하기 전에 셀이 null인지 확인하십시오. – Mohsin

+0

http://www.onlinexamples.com/searchactionfull.action?keywords=excel&idlabels=-1 –

답변

3

을 당신이 2004 년 3 월에서 해당 POI 2.5 날짜를 알고,하지 당신은 7 세 이상입니다

나는 POI 3.8 beta 5와 같은 새로운 버전으로 업그레이드 할 것을 강력히 제안합니다. 당신이 놓친 7 년 동안의 버그 수정이있었습니다! 이 10 년의 POI 버전 (이상적으로 올해의 버전)을 사용하면 문제가 사라질 가능성이 매우 높습니다. 오류없이 파일을 읽을 수 있습니다.

관련 문제