2013-12-18 5 views
2

Как читать большую (95 + MB) книгу excel с более чем 10 листами в java с использованием библиотеки POI без увеличения JVM (например, -Xmx1G). Если мы запустим файл jar без увеличения VM, получим ошибку OutOfMemory. Как я могу оптимизировать эту проблему в самой кодировке вместо увеличения VM?Как читать большой файл excel в java без увеличения VM

+3

Что вам нужно делать с листом? Вам нужно это в памяти все сразу, пожалуйста, будьте более конкретными. –

+0

У меня есть книга Excel (95mb), она имеет 15 листов, каждый лист имеет разные поля. я должен читать и хранить данные в соответствующих полях в базе данных SQL. – Ashokkumar

+7

У Apache POI есть потоковая/event-модель для чтения файлов excel, что довольно эффективно (память разумно) и которая не загружает весь лист в память. Я предлагаю вам взглянуть на это. См. Http://poi.apache.org/spreadsheet/ –

ответ

5

Нет умных «оптимизаций», которые позволят вам продолжить свой текущий подход и работать с меньшим объемом памяти.

Вам понадобится изменить вашу программу, чтобы она не загружала всю книгу в память.

Как указывает @ M.Deinum, Apache POI предоставляет альтернативный способ обработки файлов Excel, где вы получаете последовательность событий парсера, а не представление в памяти всей электронной таблицы. Переход от модели в памяти к модели на основе событий потребует значительного количества перекодировки вашего приложения. Но если вы не можете позволить себе память, у вас есть нет других практических альтернатив.

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