Что лучше с открытым исходным кодом для разбора файла Excel в Java? - PullRequest
3 голосов
/ 16 ноября 2009

Какой API лучше для парсинга Excel в Java Apache POI или JExcel API? С точки зрения скорости, использования памяти и стабильности кода.

Ответы [ 4 ]

7 голосов
/ 16 ноября 2009

Лично я бы порекомендовал POI через JExcel. Причины, по которым я выбрал POI, а не JExcelAPI:

  1. POI поддерживает старые и новые форматы листов MS Excel
  2. Имеет более чистый API (imho)
  3. Насколько я вижу, он не страдает от раздражающих проблем с датой \ временем, которые имеет JexcelApi ( Отображение даты ).

У меня была возможность использовать оба. У POI, на мой взгляд, действительно продуманный и простой в использовании API. Самым большим преимуществом с моей точки зрения является то, что вы можете отказаться от создания экземпляра рабочего листа, а затем разобраться со всем в контексте интерфейсов пользовательской модели. Это означает, что ваш код может обрабатывать как старые, так и новые форматы файлов Excel, не беспокоясь о том, какой именно.

Кроме того, вы можете читать и писать один и тот же экземпляр рабочего листа. С JExcelApi есть действительно странное разделение между «читаемыми» листами и «доступными для записи» листами, которые я нахожу странными. Это также привело к тому, что мне пришлось ввести в мой код грязную работу, чтобы перейти от «чтения» к «записи».

Я не заметил существенной разницы в производительности при использовании POI для старых двоичных файлов (POI HSSF) и JExcelApi. Однако существует значительная разница в производительности между POI HSSF (старый формат) и POI XSSF (новый формат). Я предполагаю, что это из-за всей дополнительной работы, необходимой для распаковки и анализа XML.

2 голосов
/ 16 ноября 2009

Я рекомендую использовать Apache POI, который я использовал ранее, особенно если вы поддерживаете формат Office 2007/8 OpenXML. JExcel не поддерживает это. Apache POI также поддерживает приложения Office.

Я не могу комментировать часть исполнения. Однако у меня был очень большой документ Excel (миллионы столбцов), но с относительно небольшим файлом (несколько мегабайт). POI заняло несколько минут, чтобы проанализировать и изменить его. Однако в этом случае для загрузки самого документа Excel потребовались минуты.

0 голосов
/ 16 ноября 2009

JExcelAPi лучше, чем Apache POI, за исключением того, что он не поддерживает формат Excel 2007.

0 голосов
/ 16 ноября 2009

Apache POI хорош с последними форматами, но по скорости (разбор) JExcel лучше (JExcel не поддерживает формат OpenXML, как сказал notnoop)

...