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]>

Reply via email to