Вызов функции Python из LibreCalc

У меня есть следующий код внутри файла с именем calculadora.py

def calcpy(numA,numB):
    return numA+numB

Как правильно вызвать функцию calcpy() из LibreCalc? Я хочу поставить, скажем, в ячейку A1=calcpy(B1,C1) и получить результат...

Я уже поместил скрипт Python как в /usr/lib/libreoffice/share/Scripts/python/, так и в /home/lucas/.config/libreoffice/4/user/Scripts/python, я также могу увидеть его в меню Инструменты->Макрос->Организовать макрос->Python

введите здесь описание изображения

... но я действительно не знаю, как вызвать эту функцию.

Я прочитал несколько сообщений, в которых предлагалось обернуть функцию внутри Basic, например:

function calcpy(a as double, b as double) as double
    script = GetScript("calcpy")
    calcpy = script.invoke(Array(a, b), Array(), Array())
end function

... но всякий раз, когда я использую =calcpy(5,4), я получаю сообщение об ошибке: «БАЗОВАЯ ошибка времени выполнения. Подпроцедура или процедура функции не определена».

Это вообще возможно? Правильно ли использовать Basic? Есть ли более прямой (элегантный?) способ сделать это?

Спасибо,

Лукас


person Lucas Aimaretto    schedule 20.05.2016    source источник


Ответы (1)


Здесь есть хороший ответ: Как я могу вызвать макрос Python в формуле ячейки в OpenOffice.Org Calc? В вашем случае код Basic должен быть таким:

function calcpy(a as double, b as double) as double
    Dim scriptPro As Object, myScript As Object
    scriptPro = ThisComponent.getScriptProvider()
    myScript = scriptPro.getScript( _
           "vnd.sun.star.script:calculadora.py$calcpy?language=Python&location=user")
    calcpy = myScript.invoke(Array(a, b), Array(), Array() )
end function

Да, есть более прямой/элегантный способ: Создайте надстройку. .

person Jim K    schedule 20.05.2016