Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2013 09:16:26

rom19
Зарегистрирован: 2013-11-06
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

Есть LibreOffice 4.0.2 и Python 3. Подскажите как в Python получить данные из файла таблицы .ods?

Офлайн

#2 Ноя. 6, 2013 09:27:51

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

rom19
Есть LibreOffice 4.0.2 и Python 3. Подскажите как в Python получить данные из файла таблицы .ods?

https://pypi.python.org/pypi/ezodf



Офлайн

#3 Ноя. 6, 2013 09:37:48

rom19
Зарегистрирован: 2013-11-06
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

Это я пробовал, при выполнении построчно
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 существует) ?

Офлайн

#4 Ноя. 6, 2013 09:40:57

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

Есть odf.py. Он как раз служит для этого. Единственное, я не знаю, портирован он на третью ветку или нет. А так, лучше не придумаешь механизма.

Офлайн

#5 Ноя. 6, 2013 09:52:59

rom19
Зарегистрирован: 2013-11-06
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

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

- такое чувство что работает он только с текстовыми документами. Но все равно, сейчас покопаюсь

Офлайн

#6 Ноя. 6, 2013 10:41:21

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

Значит тогда я живу в утопии… Или в собственном иллюзорном мире, так как несколько лет уже к ряду пользуюсь 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. Если не уверены, не пишите. Просто попросите объяснить или пример

Офлайн

#7 Ноя. 6, 2013 10:53:21

rom19
Зарегистрирован: 2013-11-06
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

Под 3-ку портирована. Я вообще-то неуверенно написал, что она не работает (…такое чувство). Огромное Вам спасибо. Обязательно попробую этот вариант. Просто в данный момент я пошел по другому пути - .ods файл - это zip архив xml. А его прочитать не проблема.

Офлайн

#8 Ноя. 6, 2013 10:55:10

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

Ну это изврат, хотя Вам виднее. Есть готовое решение, а Вы налепите костылей…
Если любите делать дурную работу, то я не мешаю. Возможно, больше опыта будет.

Отредактировано 4kpt_II (Ноя. 6, 2013 10:56:41)

Офлайн

#9 Ноя. 6, 2013 11:08:15

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

4kpt_II
Где старый акк ?



Офлайн

#10 Ноя. 6, 2013 11:48:09

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как прочитать данные из таблицы *.ods ?

Budulianin
Критическая непереносимость желтого

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version