2013-03-11 9 views
19

Zmieniłem z jxl na poi, ponieważ POI ma więcej funkcji. Nie udało mi się jednak przetworzyć plików xls, które zostały wygenerowane w starym formacie. Teraz ja dostaję ten błąd:Jak przetwarzać stare pliki Excela .xls przy użyciu 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)

teraz myślę używać zarówno JXL jak studnie jak UM w zależności od wersji xls tak dla starych plików w formacie xls użyję JXL podczas gdy nowsze wersje użyję UM. Czy to dobre rozwiązanie? Czy są jakieś alternatywy?

+4

Czy to w rzeczywistości plik Excel 5.0/7.0? –

+2

Tak Potwierdziłem, że jest to plik Excel 5/7 (Office 95) – Wael

+2

Korzystanie z pojedynczego interfejsu API jest zdecydowanie lepsze, ponieważ znacznie zmniejszyłoby to złożoność. Ale tylko te dwa są najbardziej dojrzałym API do odczytu Excel. Więc według mojej opinii jest to najlepszy sposób na zrobienie tego. –

Odpowiedz

11

Dla starych plików w formacie Excel, dostępne są następujące warianty:

  1. HSSF, realizacja POI w formacie Excel '97 plików (-2007).
    • Jeśli chcesz wyodrębnić treść tekstową, możesz użyć numeru OldExcelExtractor, który będzie pobierał tylko tekst i liczby z pliku w postaci .
    • Jeśli potrzebujesz wartości z poszczególnych komórek, a następnie trzeba wziąć podejście trochę jak OldExcelExtractor, przetwarzać plik na poziomie rekordu i sprawdzić współrzędnych na OldStringRecord, NumberRecord, OldFormulaRecord i przyjaciele.
  2. Jak już wspomniano, JXL może obsłużyć niektóre przypadki.
  3. Użyj sterownika JDBC/ODBC. Nie jest tak elastyczny jak HSSF, ale w przypadku niektórych starych formatów jest to jedyny sposób na wyodrębnienie informacji.
+1

Łącze, do którego odnosi się tekst "JDBC/ODBC", nie wskazuje żadnej istotnej treści. – James

+1

@James Dzięki, zaktualizowałem link do nowego adresu URL, wygląda na to, że poprzednia strona została usunięta :( – dan

+0

Witam Dziękuję za odpowiedzi, tylko chciałbym wiedzieć, czy istnieje sposób na wykrycie formatu pliku Excel to BIFF5? – esprittn

-4

według mojej wiedzy można użyć tego kodu do odczytu plików w formacie Excel .xls

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

czytać nowe wersje programu Excel (2007 i więcej):

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

zewnętrznego jar pliki, które będą potrzebne:

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

Jeśli praca wymaga tylko pracy z .xls, wówczas tylko wersja poi-3.0 wystarcza wściekłość. Potrzebujesz innych słoików do pracy z nowymi wersjami programu Excel.

Powiązane problemy