Który z 2 interfejsów API jest prostszy do odczytu, zapisu i edycji arkuszy programu Excel? Czy te interfejsy API nie obsługują rozszerzeń CSV?
Używając JXL dla file.xls i file.xlsx, otrzymuję wyjątek, taki jak:
jxl.read.biff.BiffException: Unable to recognize OLE stream
at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
at jxl.read.biff.File.<init>(File.java:127)
at jxl.Workbook.getWorkbook(Workbook.java:268)
at core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
at core.ReadXLSheet.init(ReadXLSheet.java:22)
at core.ReadXLSheet.main(ReadXLSheet.java:72)
Zarówno dla rozszerzeń .xls, jak i .xlsx. Używana przeze mnie wersja Java to: JDK1.6
java
excel
apache-poi
jxl
Swagatika
źródło
źródło
Odpowiedzi:
Użyłem zarówno JXL (teraz „JExcel”), jak i Apache POI . Na początku korzystałem z JXL, ale teraz używam Apache POI.
Po pierwsze, oto rzeczy, w których oba interfejsy API mają tę samą funkcjonalność końcową:
Istnieje jednak wiele różnic:
Ponadto POI zawiera nie tylko główny interfejs API „model użytkownika”, ale także interfejs API oparty na zdarzeniach, jeśli wszystko, co chcesz zrobić, to przeczytać zawartość arkusza kalkulacyjnego.
Podsumowując, ze względu na lepszą dokumentację, więcej funkcji, aktywny rozwój i obsługę formatu Excel 2007+, używam Apache POI.
źródło
getContents()
metoda w JExcelAPI oszczędza mi dużo czasu. W przypadku POI musisz sprawdzić typ komórki, a następnie pobrać jej wartość (jeśli jest to komórka numeryczna, musisz sprawdzić, czy jest to komórka typu Date) zgodnie z jej typem, a na koniec przekonwertować ją na wartość String różnymi metodami, to jest tak niewygodne. Nie mogę sobie wyobrazić, że POI nie zapewnia tak brudnej, ale wygodnej metody, jak robi to JExcelAPI.Użyłem POI.
Jeśli używasz tego, miej oko na te elementy formatujące komórki: utwórz jeden i używaj go kilka razy, zamiast tworzyć za każdym razem dla komórki, jest to ogromna różnica w zużyciu pamięci lub duże dane.
źródło
Nie znam JXL, ale używamy POI. Punkt POI jest dobrze utrzymany i może obsługiwać zarówno binarny format xls, jak i nowy format oparty na XML, który został wprowadzony w pakiecie Office 2007.
Pliki CSV nie są plikami programu Excel, są to pliki tekstowe, więc te biblioteki ich nie czytają. Będziesz musiał samodzielnie przeanalizować plik CSV. Nie znam żadnych bibliotek plików CSV, ale też nie szukałem.
źródło
Do odczytu „zwykłych” plików CSV w Javie dostępna jest biblioteka o nazwie OpenCSV, dostępna tutaj: http://opencsv.sourceforge.net/
źródło