Найти - Пользователи
Полная версия: Как прочитать данные из таблицы *.ods ?
Начало » Python для новичков » Как прочитать данные из таблицы *.ods ?
1 2
rom19
Есть LibreOffice 4.0.2 и Python 3. Подскажите как в Python получить данные из файла таблицы .ods?
Budulianin
rom19
Есть LibreOffice 4.0.2 и Python 3. Подскажите как в Python получить данные из файла таблицы .ods?

https://pypi.python.org/pypi/ezodf
rom19
Это я пробовал, при выполнении построчно
ods = newdoc(doctype='ods', filename='spreadsheet.ods')
sheet = Sheet('SHEET', size10, 10))
ods.sheets += sheet
sheet.set_value(“cell with text”)
sheet.set_value(3.141592)
sheet.set_value(100, currency='USD')
sheet.formula = "of:=SUM("
pi = sheet.value
ods.save()
после команды
sheet.set_value(“cell with text”)
терминал выдает следующее:
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “/usr/local/lib/python3.3/dist-packages/ezodf/table.py”, line 51, in __getitem__
return self.get_cell(get_cell_index(key))
File “/usr/local/lib/python3.3/dist-packages/ezodf/table.py”, line 110, in get_cell
return wrap(self._cellmatrix.get_cell(pos))
File “/usr/local/lib/python3.3/dist-packages/ezodf/tablerowcontroller.py”, line 40, in get_cell
return self._rows
IndexError: list index out of range
Где косяк (файл .ods существует) ?
4kpt_II
Есть odf.py. Он как раз служит для этого. Единственное, я не знаю, портирован он на третью ветку или нет. А так, лучше не придумаешь механизма.
rom19
Odfpy is a library to read and write OpenDocument v1.1 files.
In addition to the API, there are a few scripts:
* csv2odf - Create OpenDocument spreadsheet from comma separated values
* mailodf - Email ODF file as HTML archive
* odf2xhtml - Convert ODF to (X)HTML
* odf2mht - Convert ODF to HTML archive
* odf2xml - Create OpenDocument XML file from OD? package
* odfimgimport - Import external images
* odflint - Check ODF file for problems
* odfmeta - List or change the metadata of an ODF file
* odfoutline - Show outline of OpenDocument
* odfuserfield - List or change the user-field declarations in an ODF file
* xml2odf - Create OD? package from OpenDocument in XML form

- такое чувство что работает он только с текстовыми документами. Но все равно, сейчас покопаюсь
4kpt_II
Значит тогда я живу в утопии… Или в собственном иллюзорном мире, так как несколько лет уже к ряду пользуюсь odfpy для получения данных из таблиц *.ods.

from odf.opendocument import load
from odf.opendocument import Spreadsheet
from odf.text import P
from odf.table import TableRow, TableCell
#
doc = load("data.ods").spreadsheet
rows = doc.getElementsByType(TableRow)
for row in rows:
    cells = row.getElementsByType(TableCell)
    for cell in cells:
        all_data = cell.getElementsByType(P)
        for data in all_data:
            print data

P.S. Единственное. Я не знаю, портирован ли он на 3.Х. Под 2.Х работает стабильно и без сбоев
P.S.S. Если не уверены, не пишите. Просто попросите объяснить или пример
rom19
Под 3-ку портирована. Я вообще-то неуверенно написал, что она не работает (…такое чувство). Огромное Вам спасибо. Обязательно попробую этот вариант. Просто в данный момент я пошел по другому пути - .ods файл - это zip архив xml. А его прочитать не проблема.
4kpt_II
Ну это изврат, хотя Вам виднее. Есть готовое решение, а Вы налепите костылей…
Если любите делать дурную работу, то я не мешаю. Возможно, больше опыта будет.
Budulianin
4kpt_II
Где старый акк ?
4kpt_II
Budulianin
Критическая непереносимость желтого
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB