Подтвердить что ты не робот

Как обрабатывать старые файлы excel.xls с помощью POI?

Я переключился с jxl на poi, поскольку POI имеет больше возможностей. Однако я не смог обработать файлы xls, которые были сгенерированы в старом формате. Теперь я получаю эту ошибку:

org.apache.poi.hssf.OldExcelFormatException: прилагаемая электронная таблица представляется форматом Excel 5.0/7.0 (BIFF5). POI поддерживает только BIFF8 формат (из версий Excel 97/2000/XP/2003)

Теперь я собираюсь использовать как JXL, так и POI в зависимости от версии xls, поэтому для старых файлов формата xls я буду использовать jxl, в то время как для более новых версий я буду использовать POI. Это хорошее решение? Есть ли альтернативы?

4b9b3361

Ответ 1

Для старых файлов формата Excel у вас есть следующие варианты:

  • HSSF, POI реализация формата файла Excel '97 (-2007).
    • Если вы хотите извлечь текстовое содержимое, вы можете использовать OldExcelExtractor, который вытащит только текст и цифры из файла.
    • Если вам нужны значения из определенных ячеек, вам нужно будет немного подойти к OldExcelExtractor, обработать файл на записи уровень и проверить координаты на OldStringRecord, NumberRecord, OldFormulaRecord и друзей.
  • Как вы уже упоминали, JXL может обрабатывать и некоторые случаи.
  • Используйте драйвер JDBC/ODBC. Это не так гибко, как HSSF, но для некоторых старых форматов это единственный способ извлечь информацию.

Ответ 2

согласно моим знаниям, вы можете использовать этот код для чтения файлов excel формата .xls

FileInputStream in=new FileInputStream(new File("filename.xls"));
Wookbook wb=new HSSFWorkbook(in);

чтобы прочитать новые версии Excel (2007 и выше):

 FileInputStream in=new FileInputStream(new File("filename.xls"));
    Wookbook wb=new XSSFWorkbook(in);

внешние файлы jar, которые вам понадобятся:

 1. poi-3.9 
 2. dom4j-1.6.1
 3. XMLbeams-2.5.0

Если вы работаете, вам нужно только работать с .xls, тогда будет достаточно только poi-3.0. Вам нужны другие банки для работы с новыми версиями excel.