Исключение чтения Java Apache POI Excel

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

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

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

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


person Jeff Storey    schedule 01.02.2010    source источник
comment
Вы когда-нибудь получали ответ по этому поводу? У меня такая же проблема, и я не могу найти ответ нигде.   -  person Henry    schedule 29.07.2010


Ответы (2)


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

POIFSFileSystem poifs = new POIFSFileSystem(input);
DocumentInputStream documentInputStream = poifs.createDocumentInputStream("Workbook");
factory.processRecords(documentInputStream);
person Thariq Nugrohotomo    schedule 25.09.2013

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

person Vinodh Ramasubramanian    schedule 01.02.2010
comment
Я удалил все, кроме двух строк a b c и d e f, но все равно получаю ошибку. - person Jeff Storey; 02.02.2010