Как прочитать электронную таблицу Open Office 3.0 (.ods) из Groovy? Я хотел бы выбрать определенные столбцы из именованного листа. В идеале было бы полезно добавить пункт «где» или другой пункт критерия.
Как читать электронную таблицу Open Office?
Ответы (5)
Я никогда им не пользовался, но Open Office имеет Java API, который, конечно же, можно использовать в Groovy. также. Похоже, лучше всего начать чтение с Руководства разработчика, справочник по Java UNO и примеры в Java и (привет!) Groovy. Надеюсь, это поможет!
Может быть что-то здесь, на Spring Factory или здесь, на Groovy и JMX. Существует форум для Groovy и Open Office.
Не могли бы вы экспортировать таблицу/электронную таблицу в виде записей SQL, а затем использовать это. Вы также можете посмотреть этот плагин для goovy -- http://www.ifcx.org/< /а>
Документы OpenOffice представляют собой ZIP-файлы, которые содержат данные документа в формате XML, а также некоторые другие файлы (таблицы стилей для текстовых документов). Подробности можно найти здесь.
Основная проблема с calc — это формулы. Если у вас есть только табличные данные, вы можете просто прочитать значения ячеек и использовать их. Таким образом, вы можете открыть ZIP-архив, прочитать в нем content.xml
и проанализировать его любым парсером XML.
Но когда ячейка содержит формулу, ее нужно выполнить. В этом случае вам придется открыть документ через UNO API. Вот версия Java. Существует ссылка, по которой вы можете скачать пример кода, который объясняет, как открывать документы ODF и как проверять их содержимое. Есть также фрагменты, но ни один из них не показывает, как исследовать лист.
Главный недостаток UNO — документация. Каждый метод где-то объясняется, но сначала вы должны найти метод, который решает вашу проблему.
Поскольку в заголовке не упоминается Groovy (упоминается только конкретный вопрос), я не хотел создавать новый вопрос.
Как вообще читать табличный документ Open Office? Есть инструменты для его создания (ooo-python), но не для его чтения. Это XML, но простое погружение в него и попытка получить правильную логику извлечения данных, которые мне нужны, кажутся неоптимальными.
Мне бы хотелось, чтобы функции были похожи на поддержку Excel COM, но из инструмента командной строки (или языка сценариев).