2010-02-01 5 views
2

Я пытаюсь использовать POI для чтения файла Excel. Это будет большой файл (> 50 тыс. Строк), поэтому я использую eventusermodel, а не простой usermodel, который считывает весь файл в память. Мой код выглядит следующим образом:Java Apache POI Исключение чтения Excel

File file = new File("C:\\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); 

Но я получаю исключение

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

Это исключение якобы фиксировали в 3,5, однако, я использую 3.6, и я также попробовал последний ствол тянуть с POI и все тот же вопрос.

Я попытался сжать файл, чтобы иметь несколько строк, но с той же ошибкой. Кто-нибудь имел дело с этим раньше?

спасибо, Джефф

+0

Вы когда-нибудь получали ответ? У меня такие же проблемы, и я не могу найти ответ нигде. – Henry

+0

У меня еще нет, извините. –

ответ

0

Есть ли у вас какие-либо большие комментарии в файле Excel. Если бы вы могли попробовать после удаления комментариев.

+0

Я удалил все, кроме двух строк «a b c» и «d e f», но все еще получаю ошибку. –

0

Вы должны использовать метод EventRecordFactory.processRecords с параметром DocumentInputStream. (вместо чистого FileInputStream).

POIFSFileSystem poifs = new POIFSFileSystem(input); 
DocumentInputStream documentInputStream = poifs.createDocumentInputStream("Workbook"); 
factory.processRecords(documentInputStream); 
Смежные вопросы