Bug 48096 - org.apache.poi.hssf.record.RecordFormatException: expected 449 but got 49409
Summary: org.apache.poi.hssf.record.RecordFormatException: expected 449 but got 49409
Status: RESOLVED FIXED
Alias: None
Product: POI
Classification: Unclassified
Component: HSSF (show other bugs)
Version: 3.5-FINAL
Hardware: Macintosh Mac OS X 10.4
: P2 major (vote)
Target Milestone: ---
Assignee: POI Developers List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-11-01 09:38 UTC by Joubert Nel
Modified: 2009-11-03 12:26 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joubert Nel 2009-11-01 09:38:22 UTC
I use the eventmodel of POI to process XLS files and convert them to XML (I am the creator of http://elev.at).

I came across a spreadsheet today that results in the RecordFormatException as per the subject line.
The spreadsheet can be found at: http://www.nytimes.com/packages/html/nyregion/20050405_DONOR_SPREADSHEET.xls

The stack trace I get is:

org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance
	org.apache.poi.hssf.record.RecordFactory$ReflectionRecordCreator.create(RecordFactory.java:64)
	org.apache.poi.hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:263)
	org.apache.poi.hssf.record.RecordFactoryInputStream.readNextRecord(RecordFactoryInputStream.java:270)
	org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:236)
	org.apache.poi.hssf.eventusermodel.HSSFEventFactory.genericProcessEvents(HSSFEventFactory.java:122)
	org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processEvents(HSSFEventFactory.java:85)
	org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processWorkbookEvents(HSSFEventFactory.java:56)
	xlsconvert$to_xml__7.invoke(xlsconvert.clj:154)
	liftServlet$fn__29.invoke(liftServlet.clj:47)
	clojure.lang.MultiFn.invoke(MultiFn.java:165)
	liftServlet$_doGet__41.invoke(liftServlet.clj:54)
	liftServlet.doGet(Unknown Source)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	liftServlet.service(Unknown Source)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	liftServlet.service(Unknown Source)
root cause

org.apache.poi.hssf.record.RecordFormatException: expected 449 but got 49409
	org.apache.poi.hssf.record.RecalcIdRecord.<init>(RecalcIdRecord.java:46)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	org.apache.poi.hssf.record.RecordFactory$ReflectionRecordCreator.create(RecordFactory.java:56)
	org.apache.poi.hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:263)
	org.apache.poi.hssf.record.RecordFactoryInputStream.readNextRecord(RecordFactoryInputStream.java:270)
	org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:236)
	org.apache.poi.hssf.eventusermodel.HSSFEventFactory.genericProcessEvents(HSSFEventFactory.java:122)
	org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processEvents(HSSFEventFactory.java:85)
	org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processWorkbookEvents(HSSFEventFactory.java:56)
	xlsconvert$to_xml__7.invoke(xlsconvert.clj:154)
	liftServlet$fn__29.invoke(liftServlet.clj:47)
	clojure.lang.MultiFn.invoke(MultiFn.java:165)
	liftServlet$_doGet__41.invoke(liftServlet.clj:54)
	liftServlet.doGet(Unknown Source)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	liftServlet.service(Unknown Source)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	liftServlet.service(Unknown Source)
Comment 1 Josh Micich 2009-11-03 12:26:01 UTC
Fixed in svn r832536 

junit added

The deserialization code was made more strict during svn r718810 . This check has been removed since Excel(2007) seems to tolerate the incorrect field value.