문제

JXL 및 Apache POI를 사용하여 Excel 파일에서 데이터를로드하려고 시도했습니다. 지금까지 JXL 메커니즘은 제대로 작동했습니다. 파일에 이미지를 포함하더라도

구문 분석하지 않는 소스에서 파일을 받았는데 Poi로 다음과 같은 예외를 얻습니다.

Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0xE2 left 2 bytes remaining still to be read.
     at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:124)
     at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:402)
     at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:277)
     at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:202)
     at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:184)
     at testXlsParsers.main(TestXlsParsers.java:19)

그리고 JXL을 사용하면 바운드에서 색인을 얻습니다.

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
     at java.util.ArrayList.RangeCheck(ArrayList.java:546)
     at java.util.ArrayList.get(ArrayList.java:321)
     at jxl.read.biff.WorkbookParser.getSheet(WorkbookParser.java:247)
     at ParserXLS.parse(ParserXLS.java:27)
     at ParserXLS.main(ParserXLS.java:46)

파일은 Excel로로드되지만 열린 사무실로로드되며 원시 데이터에서 볼 수있는 유일한 것은 Adobe XMP Core 4.1 관련 객체입니다 ... 문제의 원인 인 것 같습니다. 이미지를 제거하면 잘 작동합니다. ... 내가 다른 JPG를 벌금으로 고집하면.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.277092, Fri Feb 23 2007 14:16:18        ">

이것을 무시할 수있는 방법이 있습니까? 이 파일을 구문 분석하는 방법은 어떻게해야합니까?

감사.

도움이 되었습니까?

해결책

시도해야 할 한 가지는 최신 버전의 Apache Poi를 사용하는 것입니다. 이와 같은 버그는 시간이 지남에 따라 고정됩니다.

POI의 최신 버전이 도움이되지 않으면 (쓰기시 3.8 베타 2) POI Bugzilla에서 새 버그를 열고 문제 파일을 업로드해야합니다. 당신이보고있는 예외는 POI에 의해 일정량의 데이터가 있어야한다고 믿고 더 많은 것을 찾아야합니다. 파일을 사용하면 해당 데이터가 왜 거기에 있는지 식별하고 해결할 수 있습니다. (즉, 아직 고정되지 않았다고 가정합니다!)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top