Как обрабатывать старые файлы 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. Это хорошее решение? Есть ли альтернативы?
Ответы
Ответ 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.