Каков лучший API для чтения листов Excel в java-JXL или Apache POI [закрыто]

какой из 2 API проще читать/писать / редактировать листы excel ? Эти API не поддерживают расширения CSV ?

использование JXL для файла.XLS и файл.xlsx, я получаю исключение, как:

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)

как для .xls и .расширения XLSX-файл. Версия Java, которую я использую: JDK1.6

4 ответов


Я использовал как JXL (теперь "JExcel") и Apache POI. Сначала я использовал JXL, но теперь я использую Apache POI.

во-первых, вот вещи, где оба API имеют одинаковую конечную функциональность:

  • вход свободный
  • стиль ячейки: выравнивание, фоны (цвета и узоры), границы (типы и цвета), поддержка шрифтов (имена шрифтов, цвета, размер, полужирный, курсив, зачеркивание, подчеркивание)
  • Формулы
  • ссылки
  • Объединенные области ячеек
  • размер строк и столбцов
  • форматирование данных: числа и даты
  • перенос текста в ячейках
  • Закрепить Области
  • поддержка верхнего / нижнего колонтитула
  • чтение/запись существующих и новых таблиц
  • оба пытаются сохранить существующие объекты в электронных таблицах, которые они читают в неповрежденном, насколько вероятный.

однако, есть много различий:

  • возможно, самое существенное различие заключается в том, что Java JXL не поддерживает Excel 2007+ ".xlsx " формат; он поддерживает только старый BIFF (двоичный)".формат xls. Apache POI поддерживает оба с общим дизайном.
  • кроме того, Java-часть API JXL последний раз обновлялась в 2009 году (3 года, 4 месяца назад, когда я пишу это), хотя похоже, что есть API c#. Апач пои активно поддерживать.
  • JXL не поддерживает Условное форматирование, Apache POI делает, хотя это не так важно, потому что вы можете условно форматировать ячейки с вашим собственным кодом.
  • JXL не поддерживает богатое текст форматирование, т. е. различное форматирование в текстовой строке; Apache POI поддерживает его.
  • JXL поддерживает только определенные вращения текста: горизонтальные / вертикальные, + / - 45 градусов и штабелированные; Apache POI поддерживает любое целое число градусов в стеке.
  • JXL не поддерживает фигуры рисования; Apache POI делает.
  • JXL поддерживает большинство параметров настройки страницы, таких как Пейзаж/Портрет, Поля, размер бумаги и масштабирование. Apache POI поддерживает все это, а также повторяющиеся строки и столбцы.
  • JXL не поддерживает разделенные панели; Apache POI делает.
  • JXL не поддерживает создание диаграммы или манипуляции; эта поддержка еще не существует в Apache POI, но API медленно начинает формироваться.
  • Apache POI имеет более обширный набор документации и примеров, доступных, чем JXL.

кроме того, POI содержит не только основной API "usermodel", но и API на основе событий, если все, что вы хотите сделать, это прочитать содержимое электронной таблицы.

В заключение, из-за лучшей документации, дополнительных функций, активной разработки и поддержки формата Excel 2007+, я использую Apache POI.


Я использовал POI.

Если вы используете это, следите за этими форматерами ячеек: создайте один и используйте его несколько раз вместо создания каждый раз для ячейки, это огромная разница в потреблении памяти или большие данные.


Я не знаком с JXL, но мы используем POI. POI хорошо поддерживается и может обрабатывать как двоичный файл .формат xls и новый формат на основе xml, который был представлен в Office 2007.

CSV-файлы не являются файлами excel, они являются текстовыми файлами, поэтому эти библиотеки их не читают. Вам нужно будет самостоятельно проанализировать CSV-файл. Я не знаю о каких-либо библиотеках файлов CSV, но я тоже не смотрел.


для чтения" простых " CSV-файлов на Java существует библиотека OpenCSV, доступная здесь:http://opencsv.sourceforge.net/