2011-01-20 9 views
6

Czy jest dostępna wydajna pamięć Java do odczytywania dużych plików programu Microsoft Excel (zarówno .xls, jak i .xlsx)? Mam bardzo ograniczone doświadczenie z Apache POI i wydawało mi się, że jest to ogromny wspomnienie pamięci z tego, co pamiętam (choć może to było tylko do pisania, a nie do czytania). Czy jest coś lepszego? Czy błędnie pamiętam i/lub niewłaściwie używam POI?Pamięć wydajna biblioteka Java do odczytu plików Excel?

Ważne jest, aby miał również "przyjazną" licencję na oprogramowanie typu open source.

+0

tylko drugi Znam to http://jexcelapi.sourceforge.net/. Nigdy tego nie używałem, więc nie mogę wypowiedzieć się na temat użycia pamięci. – CoolBeans

+0

Ile pamięci jest dla ciebie za dużo? –

+0

Ile jest za dużo zależy. Idealnie jednak, jeśli plik jest taki, że można go przetworzyć, jeśli najpierw został zapisany jako plik .csv, chciałbym, aby był on przetwarzany jako plik Excel. Ideał może nie być możliwy, ale chciałbym być bliżej. –

Odpowiedz

5

Biblioteka punktów Apache ma numer event-based API, który ma mniejszy obszar pamięci. Niestety działa tylko z HSSF (Horrible Spreadsheet Format), a nie XSSF (format XML Spreadsheet - dla plików OOXML).

+0

Dzięki, ale to jest bummer, że nie działa dla XSSF, ponieważ to, co byłoby używane dla plików z partiami (> 65536) wierszy. –

+3

Wygląda na to, że w przypadku XSSF może dojść do obejścia. Czy ktoś może komentować to: http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api –

+0

@Michael wydaje się, że to przyzwoite obejście, choć nieco bardziej zaangażowane. Ponieważ XSSF to ostatecznie XML, do analizowania pliku Excela używasz parsera SAX. –

1

Formaty plików Excel są (oba) ogromne i niezwykle skomplikowane, a wszystko, co czyta wszystkie ich możliwe treści, będzie równie duże i skomplikowane. Pamiętaj, że mogą zawierać zakresy, makra, łącza, pliki osadzone itp.

Jeśli jednak czytasz coś prostego, jak siatkę liczb, polecam najpierw przekonwertować arkusz kalkulacyjny na coś prostszego, np. CSV, a następnie odczytać ten format.

+0

CSV jest preferowanym formatem, ale czasami użytkownik może mieć ilość danych CSV przechowywanych w pliku .xls. Nie chcę im otwierać Excela, zapisywać jako CSV, a potem wracać do mojej aplikacji. Oczywiście to jest praca, która zadziała, ale jest daleka od ideału. –

0

Spójrz na JExcel:

http://jexcelapi.sourceforge.net/

Nie mogę odpowiadać za zużycie pamięci, ale oczywiście z dużymi arkuszami kalkulacyjnymi swój zamiar zużywają dużo pamięci do przetworzenia.

Powinieneś być w stanie wykorzystać go do xls i xlsx:

Read XLSX file in Java

+1

JExcel API nie obsługuje plików 'xlsx' –

Powiązane problemy