2009-09-21 15 views
5

Tôi đã thử sử dụng JXL và Apache POI để tải dữ liệu từ tệp excel, cho đến nay cơ chế JXL đã hoạt động tốt. Ngay cả khi tôi nhúng một hình ảnh vào tập tin.JXL và phân tích cú pháp Apache POI trội với các đối tượng hình ảnh đính kèm

tôi nhận được một tập tin từ một nguồn mà wont phân tích, tôi nhận được ngoại lệ sau đây với 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) 

và với jxl tôi nhận được một chỉ số nằm ngoài giới hạn

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) 

Các tập tin tải vào excel nhưng không vào văn phòng mở và điều duy nhất tôi có thể thấy trong dữ liệu thô là đối tượng liên quan đến Adobe XMP Core 4.1 ... có vẻ là nguyên nhân của sự cố, nếu tôi xóa hình ảnh hoạt động tốt ... nếu tôi dính một jpg khác.

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

Có cách nào để bỏ qua điều này không? Làm thế nào tôi sẽ đi về phân tích cú pháp tập tin này.

Cảm ơn.

Trả lời

2

Một điều cần thử là sử dụng phiên bản Apache POI mới hơn - các lỗi như thế này được khắc phục theo thời gian.

Nếu phiên bản mới nhất của POI không hỗ trợ (3.8 beta 2 khi viết), bạn nên mở một lỗi mới trong trình vá lỗi POI và tải lên tệp sự cố. Ngoại lệ bạn thấy là do POI tin rằng cần có một lượng dữ liệu nhất định và tìm kiếm nhiều hơn. Với tệp, bạn có thể xác định lý do tại sao dữ liệu đó ở đó và làm việc xung quanh nó. (Tức là, giả sử nó chưa được sửa!)

Các vấn đề liên quan