Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

21 Сентябрь 2018, 15:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2   Вниз
  Печать  
Автор Тема: Пайтон скрипты - ликбез  (Прочитано 14618 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #15: 17 Ноябрь 2012, 19:07 »

Все файлы можно, конечно, хранить в любой папке, например, с именем "111" на диске "C:"
Тогда код слегка изменится:

Код:
arg1="C:\111\g2c3.py"
arg2="C:\111\gmsh.msh"
arg3="C:\111\sol.inp"
Записан
calc4fem
Форумчанин
***
Offline Offline

Сообщений: 276


« Ответ #16: 17 Ноябрь 2012, 19:26 »

ого! внезапно - работает. аргументы в принципе присобачиваются из интерфейса.
правда выдача (sol.inp) в соответствии со скриптом же в ту же папку
уже 50% полезной статьи!
но это можно наверно доделать сам скрипт. А произвольную функцию нескольких аргументов (например res=x+y) никак нельзя заставить отработать внутри ячейки Calc ?
« Последнее редактирование: 17 Ноябрь 2012, 19:40 от calc4fem » Записан
Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #17: 17 Ноябрь 2012, 19:33 »

Ну разнесите все файлы по разным папкам (имена можете выбрать по желанию.
Код:
arg1="C:\111\g2c3.py"
arg2="C:\222\gmsh.msh"
arg3="C:\333\sol.inp"
Записан
calc4fem
Форумчанин
***
Offline Offline

Сообщений: 276


« Ответ #18: 17 Ноябрь 2012, 19:40 »

работает еще прекрасней!
кстати команда shell из функции тоже работает. то есть если функция возвращает некое значение в текстовый файл то теоретически его можно считать и передать как результат функции Calc
Это же адски интересно?
Интересно - можно ли придумать на этой почве надстройку. даже пусть не сложную как надстройку а как форма распространения самой полезной идеи?
с кратким описанием начальных сведений из пайтона для широких рабочекрестьянских масс
NumPy воткнуть в опенофис было бы неплохо.
« Последнее редактирование: 17 Ноябрь 2012, 19:48 от calc4fem » Записан
Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #19: 19 Ноябрь 2012, 11:19 »

А теперь ложка дегтя.

Вот тут
Код:
arg0="c:\Program Files\OpenOffice.org 3\program\python.exe" & " "
забит жестко путь к Python.

А если у вас LibreOffice?
А если у вас Linux?
А если вы установили OpenOffice/LibreOffice в какую-то другую папку, или у вас Portable версия?

Вы должны каким-то образом программно получить переменную окружения INSTALLLOCATION и использовать её в коде, чтобы сделать макрос переносимым.

Я, честно говоря, не помню, как это сделать, а рыться в документации нет времени.

Кто-нибудь из "гуру" напомнит?
Записан
Yakov
Администратор
**
Offline Offline

Сообщений: 2 344


WWW
« Ответ #20: 19 Ноябрь 2012, 12:20 »

http://wiki.openoffice.org/wiki/Ru/FAQ/Basic
вопрос "Как найти каталог, в который установлен OpenOffice.org"
Записан

Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #21: 19 Ноябрь 2012, 14:14 »

Это хорошо.
Ещё бы вспомнить, как программно определить в какой операционной системе вы работаете: Windows, Linux, MacOS, ...?
Записан
Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #22: 19 Ноябрь 2012, 15:18 »

http://wiki.openoffice.org/wiki/Ru/FAQ/Basic
вопрос "Как найти каталог, в который установлен OpenOffice.org"
Цитата:
Из Basic
com.sun.star.util.OfficeInstallationDirectories

Вспомнил еще сервис
Код:
paths = CreateUnoService("com.sun.star.util.PathSubstitution")
выдает массу всяких путей.
Записан
calc4fem
Форумчанин
***
Offline Offline

Сообщений: 276


« Ответ #23: 20 Ноябрь 2012, 05:13 »

Я не знаю почему в Опен Офис сделали такую урезанную поддержку Пайтон. Самый в общем то красноглазый язык и такое невнимание. Полагаю что связано со второй платной расширенной версией от Sun - поддержка мощного языка наверно привела бы к тому что всю функциональность платной версии старого ООо быстро бы дописали умельцы. Кстати даже не знаю что с ней, с этой версией, сейчас.
Я использую Линукс постоянно дома но пользователей Мака поблизости нет.
Вот самая простая навскидку схема с файлом электронных таблиц где предлагается вручную выбрать пути (к пайтону, к файлу и тд)
Если опен офис будет сам искать место установки пайтон то в связи с тем что версии постоянно меняются может быть лучше оставить вариант ручного выбора (с пояснением где примерно копать). А при нажатии на открытие файла можно (в продвинутом варианте) автоматически открывать папку с наиболее вероятным для данной ОС в данный момент местом.
Сам файл скрипта разработчик (который будет использовать сам темплейт) может кончено просто поместить в архив с файлом ООо и пользователь там же его и найдет куда распаковал (то есть по умолчанию тот же путь где сам файл). Опционально - все прочие пути.
У меня только пока один вопрос - как в коде прописать текстовую переменную выбранного пути заданного контрола, размещенного прямо на рабочей книге? К стыду не смог это сделать даже, настолько бедны мои познания бэйсика.
Конечно если развивать эту тему дальше (как использовать библиотеки пайтон типа wx и numPy если таковые используются в скрипте но их нет в составе ООо). По тупому прописать путь к библиотеке или воткнуть ее с помощью расширения в дистрибутив). У меня настолько бедны познания в этом языке, одни предположения. Я думаю если закинуть даже самый простой темплейт (типа PythonRun или Run4Python) на хранилище то может быть это как то привлечет внимание сообщества в конце концов.

[вложение удалено Администратором]
« Последнее редактирование: 20 Ноябрь 2012, 05:21 от calc4fem » Записан
Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #24: 20 Ноябрь 2012, 11:51 »

У меня только пока один вопрос - как в коде прописать текстовую переменную выбранного пути заданного контрола, размещенного прямо на рабочей книге?
Макрос, читающий выбранные значения ваших контролов в массив:
Код:
Sub Main
Dim dpv(3)

oDoc=ThisComponent
oSheet=oDoc.Sheets.getByName("Sheet1")   
dp=oSheet.DrawPage

For i=0 To 3
dpv(i)=dp.getByIndex(i).Control.Text
MsgBox dpv(i)
Next i

End Sub
Записан
calc4fem
Форумчанин
***
Offline Offline

Сообщений: 276


« Ответ #25: 20 Ноябрь 2012, 16:12 »

спасибо за код - доделаю темплейт.
а с чем связано ограничение что команда шелл не запускает консольных программ или запускает без консоли? то есть из папки windows/system32    calc.exe запускается, cmd.exe - нет. батники соответственно тоже нет.
Записан
Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #26: 20 Ноябрь 2012, 17:47 »

Shell и есть "эмулятор" cmd.exe в OpenOffice  (но это не "обычная" консоль, некоторые возможности недоступны).
Батники легко запускаются.
Пусть в папке "444" есть такой a.bat:
Код:
"c:\Program Files\OpenOffice.org 3\program\python.exe" C:\111\g2c3.py  C:\222\gmsh.msh C:\333\sol.inp C3
Тогда в Shell он вызывается так:
Код:
Shell ("c:/444/a.bat")
Записан
calc4fem
Форумчанин
***
Offline Offline

Сообщений: 276


« Ответ #27: 21 Ноябрь 2012, 07:06 »

Очень раздражает исчезновение консоли при запуске. Никак нельзя ее оставить, не знаете?
Версию шаблона я доделал. Можно ее конечно поулучшать, но я думаю так или иначе ее следует распространить (через sf.net например) просто прежде всего как саму идею для пайтонистов. хотя конечно минус то что в ооо - голимый пайтон без многих библиотек типа tk.
в линуксе надо просто писать в первом пути слово python
в папке что то попробовал подцепить по аналогии - вылетел офис. ну там понятно никаких exe в помине нет
Как получать результаты пайтон функций (с произвольным количеством переменных) с помощью ООо я не знаю. Надеюсь что когда нибудь появится нормальная поддержка языка.  
Кстати нагуглил возможно полезное онлайн приложение vb2py - для трансляции кода на бэйсик в питон


[вложение удалено Администратором]
« Последнее редактирование: 21 Ноябрь 2012, 07:25 от calc4fem » Записан
Hasim
Форумчанин
***
Offline Offline

Сообщений: 754


Woe from wit


« Ответ #28: 21 Ноябрь 2012, 10:59 »

Запустить консольные программы, например, cmd.exe, или Far.exe (консольный файловый менеджер), ..., а также и любые другие (не консольные), и батники тоже, можно с помощью сервиса "com.sun.star.system.SystemShellExecute":
Код:
Sub Main
    Dim oExec As Object
    oExec = createUnoService("com.sun.star.system.SystemShellExecute")
oExec.execute("C:\WINDOWS\system32\cmd.exe", "", 0)
'oExec.execute("C:\FAR\Far.exe", "", 0)
'oExec.execute("C:\WINDOWS\system32\calc.exe", "", 0)
        'oExec.execute("C:\444\a.bat", "", 0)
End Sub
« Последнее редактирование: 21 Ноябрь 2012, 11:11 от Hasim » Записан
calc4fem
Форумчанин
***
Offline Offline

Сообщений: 276


« Ответ #29: 23 Ноябрь 2012, 06:48 »

да - большое спасибо. я просто пытался запустить оконно-консольное приложение таким образом и в принципе ничего не помогло - ни уносервис ни батники - не знаю почему. вручную все запускается, шеллом нет. исходя из чего сделал неверный вывод что не запускается из-за того что консоль
шаблоник вывалил на http://sourceforge.net/projects/libo4py/ - вас указал в свойствах файла, данных кроме тех что тут доступны я не знаю. дайте знать если хотите что то поменять и т.д.
Записан
Страниц: « 1 2   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!