Methods Summary |
---|
public short | abortableProcessEvents(org.apache.poi.hssf.eventusermodel.HSSFRequest req, java.io.InputStream in)Processes a DocumentInputStream into essentially Record events.
return genericProcessEvents(req, new RecordInputStream(in));
|
public short | abortableProcessWorkbookEvents(org.apache.poi.hssf.eventusermodel.HSSFRequest req, org.apache.poi.poifs.filesystem.POIFSFileSystem fs)Processes a file into essentially record events.
InputStream in = fs.createDocumentInputStream("Workbook");
return abortableProcessEvents(req, in);
|
protected short | genericProcessEvents(org.apache.poi.hssf.eventusermodel.HSSFRequest req, org.apache.poi.hssf.record.RecordInputStream in)Processes a DocumentInputStream into essentially Record events.
short userCode = 0;
short sid = 0;
process:
{
Record rec = null;
while (in.hasNextRecord())
{
in.nextRecord();
sid = in.getSid();;
//
// for some reasons we have to make the workbook to be at least 4096 bytes
// but if we have such workbook we fill the end of it with zeros (many zeros)
//
// it is not good:
// if the length( all zero records ) % 4 = 1
// e.g.: any zero record would be readed as 4 bytes at once ( 2 - id and 2 - size ).
// And the last 1 byte will be readed WRONG ( the id must be 2 bytes )
//
// So we should better to check if the sid is zero and not to read more data
// The zero sid shows us that rest of the stream data is a fake to make workbook
// certain size
//
if ( sid == 0 )
break;
if ((rec != null) && (sid != ContinueRecord.sid))
{
userCode = req.processRecord(rec);
if (userCode != 0) break process;
}
if (sid != ContinueRecord.sid)
{
//System.out.println("creating "+sid);
Record[] recs = RecordFactory.createRecord(in);
if (recs.length > 1)
{ // we know that the multiple
for (int k = 0; k < (recs.length - 1); k++)
{ // record situations do not
userCode = req.processRecord(
recs[ k ]); // contain continue records
if (userCode != 0) break process;
}
}
rec = recs[ recs.length - 1 ]; // regardless we'll process
// the last record as though
// it might be continued
// if there is only one
// records, it will go here too.
}
else
{
throw new RecordFormatException("Records should handle ContinueRecord internally. Should not see this exception");
}
}
if (rec != null)
{
userCode = req.processRecord(rec);
if (userCode != 0) break process;
}
}
return userCode;
// Record[] retval = new Record[ records.size() ];
// retval = ( Record [] ) records.toArray(retval);
// return null;
|
public void | processEvents(org.apache.poi.hssf.eventusermodel.HSSFRequest req, java.io.InputStream in)Processes a DocumentInputStream into essentially Record events.
If an AbortableHSSFListener causes a halt to processing during this call
the method will return just as with abortableProcessEvents , but no
user code or HSSFUserException will be passed back.
try
{
genericProcessEvents(req, new RecordInputStream(in));
}
catch (HSSFUserException hue)
{/*If an HSSFUserException user exception is thrown, ignore it.*/ }
|
public void | processWorkbookEvents(org.apache.poi.hssf.eventusermodel.HSSFRequest req, org.apache.poi.poifs.filesystem.POIFSFileSystem fs)Processes a file into essentially record events.
InputStream in = fs.createDocumentInputStream("Workbook");
processEvents(req, in);
|