[xls] Парсер документа MS Excel на языке java
Самый простейший парсер (и единственный мною виденный - наверное, есть что-то гораздо более мощное) есть в OpenSource'овском поисковом движке Nutch. Тестировать не пробовал. По объему - 200 строк кода. Используются ли внешние библиотеки, не знаю. Опять же, судя по коду, умеет вытаскивать из простейших таблиц строки и числа.
А сам формат .xls - закрыт, никакого публичного стандарта на него нет, так что любой сторонний парсер точно будет неполноценным.
Или тебе подойдёт и возможность работы только с .xlsx? Да, и на Excel 2003 XML я какое-то описание видел в мсдн...
короче у меня библиотека называется poi-2.5.1-final-20040804.jar
Возникла необходимость извлечения данных из excel-евских документов с помощью Java. Сталкивался ли кто-нибудь с готовыми парсерами?Виндузятники постепенно сталкиваются с проблемами проприетарных форматов.
По идее это не разрешено делать по лиценнзии от МС.
OpenOffice.org вполне нормально позволяет вытаскивать данные (а еще редактировать и т.п.). Правда он использует native-библиотеки. Выше еще правильно советовали apache poi, он, скорее всего, легче, чем OO.
Виндузятники постепенно сталкиваются с проблемами проприетарных форматов..xlsx - афаик, открытый. Кроме того, начиная с Office 2003, можно работать с файлами с расширением .xml, они, правда, дают не всю функциональность .xls, но тем не менее.
По идее это не разрешено делать по лиценнзии от МС.Что не разрешено делать, извлекать данные из экселевских документов из программы на Java?
.xlsx - афаик, открытый.Как вы заебали этим говноформатом на 6000 страниц.
В RFC, вон, одно только описание HTTP-протокола, насколько я помню, занимает пару сотен страниц.
Много возможностей - много страниц, а ты чего хотел?Пословицу знаешь? Про краткость, та которая сестра таланта...
Краткость - сестра малому количеству возможностей.
Jexcelapi - пока что его всегда хватало (pure java библиотека).
Ещё есть Jxls, но им ни разу не пользовался.
Глянь Ещё есть Jxls, но им ни разу не пользовался.
http://www.grokdoc.net/index.php/EOOXML_objections ? Естественно, очень много получится.
Это каких возможностей? Вроде описания новых форматов представления, например, рисунков или векторной графики вместо использования уже существующих? Предоставление флагов вроде worksLikeVeryOldWord с требованием работать именно как этот самый word и без описания самих алгоритмов? И т.п. RFC на протокол HTTP занимает 200 страниц. PDF Reference на старую версию то ли 1.3, то ли 1.4 (не помню, с какой именно работал) - около 1000 страниц.
Как ты считаешь, неужели у Excel 2007 меньше нужных фич, чем у примитивного протокола HTTP или у не совсем примитивного, но тоже почти ничего не умеющего PDF 1.3/1.4? Мне кажется, что объём в 6*описание PDF - вполне оправдан.
А если ты считаешь, что Excel - это всего лишь двумерная таблица, в каждой из ячеек которой лежит строка - так считают далеко не все, и вместо Excel ты бы тогда мог использовать какой-нибудь другой формат.
Как минимум одбц-ждбц мост позволяет легко прочесть всю текстовую/числовую инфу.
Если ты потрудишься зайти хотя бы по одной из приведенных ссылок на либы, и почитать список их фич, то ты будешь неприятно удивлен, ибо либы умеют доволно много.
В совсем тяжелых случаях всегда остается вариант с написанием com+ длл-ки, и оборачиванием ее в jni.
Кстати, по поводу сложности формата. ОпенОфис читает xls.
Так что если ты хочешь дальше аргументированно продолжать спор, а не продолжать доказывать свои умозрительные заключения своими-же домыслами, то я предлагаю тебе тупо создать xls файл со всеми наворотами, которые только придут тебе в твою светлую голову, открыть файл в опенофисе, и посчитать процент фич, которые он корректно поймет. Мое имхо, что процент будет довольно большой.
Если тебе лень это делать, то ты можешь придумать другой способ посчитать, или вообще забить, и больше не писать в этом топике.
Спасибо, эти библиотечки уже попадали в моё поле зрения. Подскажи, п-та, правильно ли я понимаю, что установленной версии Office не нужно для работы этого API?
+1 за jexcelapi
использовал его для сохранения отчетов в экселе
человек вбивал данные для отчета на сайте, жал кнопку generate
и ему выплевывался .xsl файлик
сервак был линукс, офиса там никакого не было
Как минимум одбц-ждбц мост позволяет легко прочесть всю текстовую/числовую инфу.Поподробнее, плз.
В совсем тяжелых случаях всегда остается вариант с написанием com+ длл-ки, и оборачиванием ее в jni.Если бы ты повнимательнее прочитал этот тред, ты бы увидел, что я советовал человеку посмотреть способ решения его проблемы на msdn. Думаю, без msdn у него будет много проблем "с написанием com+ длл-ки".
ОпенОфис читает xls.Блокнот тоже читает.
Мое имхо, что процент будет довольно большойНа самом деле, процент не такой уж и большой. Впрочем, важно не это, а то, что это не 100%.
Кстати, что неприятно поразило в OOo - что он не смог полностью корректно отобразить даже XML Spreadsheet, который является ну уж совсем примитивным типом документа и формат которого замечательно задокументирован на том же MSDN. Из-за этого, пришлось вместо того, чтобы, как белым людям, хранить в ячейках даты - делать ячейки типом "строка" и хранить там уже отформатированные даты.
Кстати, шесть тысяч страниц - это не только на Excel, а вообще на весь офис - Word, Access итд.
Оставить комментарий
vovaV09
Возникла необходимость извлечения данных из excel-евских документов с помощью Java. Сталкивался ли кто-нибудь с готовыми парсерами?