Эффективная память Java-библиотека для чтения файлов Excel? - PullRequest
6 голосов
/ 20 января 2011

Существует ли эффективная для памяти библиотека Java для чтения больших файлов Microsoft Excel (как .xls, так и .xlsx)? У меня очень ограниченный опыт работы с Apache POI, и, насколько я помню, это был огромный баг памяти (хотя, возможно, это было только для записи, а не для чтения). Есть ли что-то лучше? Или я неправильно запоминаю и / или неправильно использую POI?

Было бы также важно иметь «дружественную» лицензию с открытым исходным кодом.

Ответы [ 3 ]

5 голосов
/ 21 января 2011

Библиотека POI Apache имеет API на основе событий , который занимает меньше места в памяти. К сожалению, он работает только с HSSF (ужасный формат электронных таблиц), но не с XSSF (XML-формат электронных таблиц - для файлов OOXML).

2 голосов
/ 21 января 2011

Форматы файлов Excel (оба) огромны и чрезвычайно сложны, и все, что читает все их возможное содержимое, будет столь же огромным и сложным. Помните, что они могут содержать диапазоны, макросы, ссылки, встроенные элементы и т. Д.

Однако, если вы читаете что-то простое, например, сетку чисел, я рекомендую сначала преобразовать электронную таблицу во что-то более простое, например CSV, а затем прочитать этот формат.

0 голосов
/ 21 января 2011

Посмотрите на JExcel:

http://jexcelapi.sourceforge.net/

Я не могу учитывать объем памяти, но очевидно, что при работе с большими таблицами вы будете тратить много памяти на обработку.

Вы должны быть в состоянии использовать его для xls и xlsx:

Чтение файла XLSX на Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...