Форум сайта python.su
Доброе время суток, уважаемые !
Есть необходимость, парсить файл Свет.ods (не коммерческое, личное )
Образец без данных во вложении.
Нужно найти ячейку с формулой =NOW() - в приложенном файле [J82]. И вытащить значения ячеек, которые находятся в строке 82 соответственно. А именно значения ячеек [B82] и [C82] - где В, С, J величины постоянные.
opkg install git opkg install python opkg install python-setuptools
git clone http://github.com/pyexcel/pyexcel-ods.git
cd pyexcel-ods
python setup.py install
Отредактировано sunny777 (Март 12, 2017 17:59:39)
Прикреплённый файлы: Свет.ods (39,9 KБ)
Офлайн
sunny777Эк у вас закручено.
Все это крутится на роутере под OpenWrt 15.05
libreoffice --convert-to csv svet.ods
#soffice.exe --convert-to csv svet.ods # for windows
Офлайн
и работаете с csv
Отредактировано sunny777 (Март 12, 2017 18:24:20)
Офлайн
sunny777Все сильно зависит от данных, может что и надо будет поправить.
Говорят сегодня магнитные бури
import subprocess as sp import re sp.check_call("libreffice --convert-to csv svet.ods",shell=1) with open("svet.csv","r") as f: data = [i.split(",") for i in f if re.search("\d\d:\d\d:\d\d$",i)] print(data)
Отредактировано doza_and (Март 12, 2017 19:05:05)
Офлайн
Таблица давно используется для удобства просмотра статистики - хотя конечно можно графики строить
Смущает:
libreffice
/bin/sh: libreoffice: not found
Traceback (most recent call last):
File "/usr/bin/par.py", line 5, in <module>
sp.check_call("libreoffice --convert-to csv svet.ods",shell=1)
File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'libreoffice --convert-to csv svet.ods' returned non-zero exit status 127
workbook = xlrd.open_workbook('my_file_name.xls', encoding='cp1252')
import get_data
data = get_data("/mnt/sda1/Svet.csv","r") as f:
data = [i.split(",") for i in f if re.search("\d\d:\d\d:\d\d$",i)]
print(data)
File "/usr/bin/par.py", line 5
data = [i.split(",") for i in f if re.search("\d\d:\d\d:\d\d$",i)]
^
IndentationError: unexpected indent
Отредактировано sunny777 (Март 12, 2017 19:32:16)
Офлайн
sunny777Очевидно не возьмется. Обрабатывать надо там где офис есть. Вообще надо поискать не ods файл с данными.
Откуда libreoffice возьмется на роутере
sunny777Не совсем. Тут может быть 2 проблемы. Кодировка имени самого файла и кодировка содержимого.
Я правильно понимаю, что с кириллицей будут проблемы ?
sunny777Я вообще не в курсах что такое get_data, и отвечаю за свой код а не за ваш. Похоже вы написали правду и в питоне 0. Только непонятно зачем вы тогда работающий код ломаете?
И получил результат:
Отредактировано doza_and (Март 12, 2017 19:51:22)
Офлайн
doza_andА я уверен. Не появятся. В xml OpenDocument хранит формулы, которые вычисляет непосредственно уже внутри своей оболочки.
Я кстати не уверен что в ваших ячейках появятся данные которые есть результат вычислений если нет офиса.
Офлайн
Обрабатывать надо там где офис есть.
Похоже вы написали правду и в питоне 0
Отредактировано sunny777 (Март 12, 2017 21:03:07)
Офлайн
sunny777До роутера должно быть преобразование в другой формат, а после роутера - обратно.
Откуда libreoffice возьмется на роутере
sunny777А то, что данные находятся в файле, предназначенном для работы в OO (OpenOffice -> LibreOffice) не смущает? Так вот в этом-то и проблема: теперь для файла нужен OO, а его нет, так как дело на роутере происходит. Данные принято упрощать как можно больше, либо они должны быть в распространённом формате. Идеально - текстовые данные.
Смущает:
libreffice
sunny777
Были установлены:
opkg install git
opkg install python
opkg install python-setuptools
python 2.7.9-6
Далее:
git clone http://github.com/pyexcel/pyexcel-ods.git
cd pyexcel-ods
python setup.py install
Отредактировано py.user.next (Март 15, 2017 11:02:04)
Офлайн
sunny777Вот это непонятно вообще. Зачем вообще нужен ods? Для просмотра данных в офисе?
и из этого файла экспортировать в *. ods ?
sunny777Я имел ввиду что чаще всего реализуются два варианта.
А смысл писать неправду, я …. в других вещах достаточно приуспел
Офлайн