Я использовал как JXL (теперь «JExcel»), так и Apache POI . Сначала я использовал JXL, но теперь я использую Apache POI.
Во-первых, вот вещи, в которых оба API имеют одинаковую конечную функциональность:
- Оба бесплатны
- Стили ячеек: выравнивание, фон (цвета и узоры), границы (типы и цвета), поддержка шрифтов (названия шрифтов, цвета, размер, полужирный, курсив, зачеркивание, подчеркивание)
- Формулы
- Гиперссылки
- Объединенные области ячеек
- Размер строк и столбцов
- Форматирование данных: числа и даты
- Перенос текста внутри ячеек
- Замерзшие оконные стекла
- Поддержка верхнего / нижнего колонтитула
- Чтение / запись существующих и новых таблиц
- Оба пытаются сохранить существующие объекты в электронных таблицах, которые они читают, нетронутыми, насколько это возможно.
Однако есть много отличий:
- Возможно, наиболее существенным отличием является то, что Java JXL не поддерживает формат Excel 2007+ «.xlsx»; он поддерживает только старый формат BIFF (двоичный) «.xls». Apache POI поддерживает оба варианта с общим дизайном.
- Кроме того, Java-часть JXL API последний раз обновлялась в 2009 году (3 года, 4 месяца назад, когда я писал это), хотя похоже, что существует C # API. Apache POI активно поддерживается.
- 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 «пользовательской модели», но и API, основанный на событиях, если все, что вам нужно, - это читать содержимое электронной таблицы.
В заключение, из-за лучшей документации, большего количества функций, активной разработки и поддержки формата Excel 2007+ я использую Apache POI.