开发者

Java Apache POI Excel reading exception

I'm trying to use POI to read an Excel file. It will be a large file ( > 50k rows) so I'm using the eventusermodel rather than the simpler usermodel which reads the entire file into memory. My code looks like:

    File file = new File("开发者_如何学CC:\\bigfile.xls");
    InputStream input = new FileInputStream(file);
    EventRecordFactory factory = new EventRecordFactory(new ERFListener() {
        @Override
        public boolean processRecord(Record rec)
        {
            return true;
        }
    }, RecordFactory.getAllKnownRecordSIDs());
    factory.processRecords(input);

But I get the exception

org.apache.poi.hssf.record.RecordFormatException: The content of an excel record cannot exceed 8224 bytes

This exception was supposedly fixed in 3.5, however, I'm using 3.6 and I also tried the latest trunk pull from POI and still the same issue.

I've tried shrinking the file to just have a few rows but the same error. Has anyone dealt with this before?

thanks, Jeff


You should use EventRecordFactory.processRecords method with DocumentInputStream type as it's parameter. (instead of pure FileInputStream).

POIFSFileSystem poifs = new POIFSFileSystem(input);
DocumentInputStream documentInputStream = poifs.createDocumentInputStream("Workbook");
factory.processRecords(documentInputStream);


Do you have any large comments in the excel file. If so could you try after removing the comments.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜