2013-03-11 3 views
19

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

org.apache.poi.hssf.OldExcelFormatException: The supplied spreadsheet seems to be Excel 5.0/7.0 (BIFF5) format. POI only supports BIFF8 format (from Excel versions 97/2000/XP/2003)

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

+4

Действительно ли это файл Excel 5.0/7.0? –

+2

Да Я подтвердил, что это файл Excel 5/7 (Office 95) – Wael

+2

Использование единого API определенно лучше, так как это значительно сократило бы сложность. Но только эти два являются самыми зрелыми API для чтения Excel. По моему мнению, это лучший способ сделать это. –

ответ

11

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

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

Ссылка, на которую ссылается текст «JDBC/ODBC», не указывает на какой-либо соответствующий контент. – James

+1

@James Спасибо, я обновил ссылку на новый url, кажется, что предыдущая страница была удалена :( – dan

+0

Привет Спасибо за ответы, просто я бы знал, есть ли способ определить формат файла Excel BIFF5? – esprittn

-4

согласно моему знанию вы можете использовать этот код для чтения файлов 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); 

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

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

если вы работа требует только работать с .xls только тогда пои-3,0 будет доста FICE. Вам нужны другие банки для работы с новыми версиями excel.

Смежные вопросы