This is what I meant to forward.
--- Begin Message ---
I regard this as a bug in either your servlet engine or in the servlet
api itself. Test this on tomcat or some other servlet engine and see if
it will work. I don't want to allow corrupt bytes/bits at the end of
the file to work around something that is a result if incorrectness
elsewhere.
Anyone feel differently?
An Feng-I Chen wrote:
>Thanks for the help, Andy.
>
>About the extra byte, I suspect it comes from the html multi-part form type.
>I got the file content (byte[]) from HttpServletRequest.getAttribute(). I
>don't think it's my codes added the extra byte. So I wonder if POI wants to
>handle this scenario or I have to change RawDataBlock locally.
>
>an
>
>
>
>-----Original Message-----
>From: Andrew C. Oliver [mailto:[EMAIL PROTECTED]]
>Sent: Thursday, May 09, 2002 10:27 AM
>To: POI Users List
>Subject: Re: got IOException from poi.poifs.storage.RawDataBlock.<init>(
>R awDat aBlock.java:98)
>
>
>An Feng-I Chen wrote:
>
>
>
>>Hi,
>>
>>I think I know why this problem occurs.
>>
>>The code RawDataBlock line 93 expects that each inputstream read should
>>return 512 bytes, if is not eof. Otherwise exception will be thrown.
>>However, my Excel file size is 13825. I tested to read my file, the last
>>read returns 2 bytes. (1 + eof, my guess)
>>
>>
>>
>>
>That extra EOF would be invalid.
>
>
>
>>Now my questions are: do you mean Excel always generates file with size X
>>times 512 therefore POI expects that? If true, how my file ends up with one
>>extra byte? For the same spreadsheet file, if I use FileInputStream, POI
>>works fine, why is that?
>>
>>
>>
>>
>I think you've got some kind of bug in your servlet. You should not
>have an extra byte or two at the end. If you look under
>jakarta.apache.org/poi/poifs it explains the structure of the OLE2CDF
>wrapper. Excel files are written with a minimum of 1 big block (4k) and
>the remainder small blocks (512). So if you've got extra stuff at the
>end...well thats incorrect so far as we know. I've never seen a file as
>you describe.
>
>Furthermore, we only support >= Biff8 (excel 97+)
>
>-Andy
>
>
>
>>Thanks.
>>
>>an
>>
>>
>>
>>-----Original Message-----
>>From: An Feng-I Chen [mailto:[EMAIL PROTECTED]]
>>Sent: Wednesday, May 08, 2002 5:43 PM
>>To: 'POI Users List'
>>Subject: RE: got IOException from poi.poifs.storage.RawDataBlock.<init>(
>>R awDat aBlock.java:98)
>>
>>
>>Actually the byte[] I got had content. I verified that by writing that
>>byte[] back to an Excel and it looks the same as the file I read from. I
>>tried both jakarta-poi-1.5.0-dev-20020427.jar and
>>jakarta-poi-1.6.0-dev-20020508.jar. Same result.
>>
>>
>>-----Original Message-----
>>From: Andrew C. Oliver [mailto:[EMAIL PROTECTED]]
>>Sent: Wednesday, May 08, 2002 5:10 PM
>>To: POI Users List
>>Subject: Re: got IOException from poi.poifs.storage.RawDataBlock.<init>(
>>RawDat aBlock.java:98)
>>
>>
>>So it looks like you've got null bytes right?
>>
>>
>>On Wed, 2002-05-08 at 18:42, An Feng-I Chen wrote:
>>
>>
>>
>>
>>>Hi,
>>>
>>>I constructed HSSFWorkwork passing in a ByteArrayInputStream but got this
>>>
>>>
>>>
>>>
>>IO
>>
>>
>>
>>
>>>exception. Tried both HSSFWorkbook(InputStream) and
>>>HSSFWorkbook(POIFSFileSystem). My codes are below. Do I miss something?
>>>Thanks.
>>>an
>>>
>>> ByteArrayInputStream inputStream= null;
>>> try {
>>> byte[] data = xlsFile.getData();
>>> if (data != null)
>>> System.out.println("***** file content size = " +
>>>data.length);
>>> else
>>> System.out.println("***** file has no content!!!");
>>> inputStream = new ByteArrayInputStream(data);
>>> //HSSFWorkbook workbook = new HSSFWorkbook(new
>>>POIFSFileSystem(inputStream));
>>> HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
>>>
>>>java.io.IOException: Unable to read entire block; 2 bytes read; expected
>>>
>>>
>>>
>>>
>>512
>>
>>
>>
>>
>>>bytes
>>> at
>>>org.apache.poi.poifs.storage.RawDataBlock.<init>(RawDataBlock.java:98)
>>> at
>>>
>>>
>>>
>>>
>>>
>>org.apache.poi.poifs.storage.RawDataBlockList.<init>(RawDataBlockList.java:
>>
>>
>8
>
>
>>
>>
>>
>>
>>>8)
>>> at
>>>
>>>
>>>
>>>
>>>
>>org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java
>>
>>
>:
>
>
>>
>>
>>
>>
>>>123)
>>>
>>>or
>>>
>>>java.io.IOException: Unable to read entire block; 2 bytes read; expected
>>>
>>>
>>>
>>>
>>512
>>
>>
>>
>>
>>>bytes
>>> at
>>>org.apache.poi.poifs.storage.RawDataBlock.<init>(RawDataBlock.java:98)
>>> at
>>>
>>>
>>>
>>>
>>>
>>org.apache.poi.poifs.storage.RawDataBlockList.<init>(RawDataBlockList.java:
>>
>>
>8
>
>
>>
>>
>>
>>
>>>8)
>>> at
>>>
>>>
>>>
>>>
>>>
>>org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java
>>
>>
>:
>
>
>>
>>
>>
>>
>>>123)
>>> at
>>>org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:190)
>>>
>>>
>>>
>>>--
>>>To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
>>>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>>>
>>>
>>>
>>>
>>>
>
>
>
>
>--
>To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
>
>--
>To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
--- End Message ---
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>