Каков лучший 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/