Java Apache POI Excel исключение при чтении - PullRequest
2 голосов
/ 02 февраля 2010

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

    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 и все та же проблема.

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

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

Ответы [ 2 ]

0 голосов
/ 25 сентября 2013

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

POIFSFileSystem poifs = new POIFSFileSystem(input);
DocumentInputStream documentInputStream = poifs.createDocumentInputStream("Workbook");
factory.processRecords(documentInputStream);
0 голосов
/ 02 февраля 2010

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

...