Форум сайта python.su
0
Есть LibreOffice 4.0.2 и Python 3. Подскажите как в Python получить данные из файла таблицы .ods?
Офлайн
33
rom19
Есть LibreOffice 4.0.2 и Python 3. Подскажите как в Python получить данные из файла таблицы .ods?
Офлайн
0
Это я пробовал, при выполнении построчно
ods = newdoc(doctype='ods', filename='spreadsheet.ods')
sheet = Sheet('SHEET', size
10, 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 существует) ?
Офлайн
58
Есть odf.py. Он как раз служит для этого. Единственное, я не знаю, портирован он на третью ветку или нет. А так, лучше не придумаешь механизма.
Офлайн
0
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
- такое чувство что работает он только с текстовыми документами. Но все равно, сейчас покопаюсь
Офлайн
58
Значит тогда я живу в утопии… Или в собственном иллюзорном мире, так как несколько лет уже к ряду пользуюсь 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

Офлайн
0
Под 3-ку портирована. Я вообще-то неуверенно написал, что она не работает (…такое чувство). Огромное Вам спасибо. Обязательно попробую этот вариант. Просто в данный момент я пошел по другому пути - .ods файл - это zip архив xml. А его прочитать не проблема.
Офлайн
58
Ну это изврат, хотя Вам виднее. Есть готовое решение, а Вы налепите костылей…
Если любите делать дурную работу, то я не мешаю. Возможно, больше опыта будет.
Отредактировано 4kpt_II (Ноя. 6, 2013 10:56:41)
Офлайн
33
4kpt_II
Где старый акк ?
Офлайн
58
Budulianin
Критическая непереносимость желтого 
Офлайн