从LibreCalc中调用python函数

时间:2016-05-20 01:47:04

标签: python function add-in user-defined-functions libreoffice-calc

我在名为calculadora.py

的文件中包含以下代码
def calcpy(numA,numB):
    return numA+numB

从LibreCalc中调用函数calcpy()的正确方法是什么?我想把它放在单元格A1=calcpy(B1,C1)中并获得结果......

我已经将python脚本放在/usr/lib/libreoffice/share/Scripts/python//home/lucas/.config/libreoffice/4/user/Scripts/python中,我也可以在菜单Tools-&gt; Macro-&gt; Organize Macro-&gt; Python <下看到它/ p>

enter image description here

...但我真的不知道如何调用该函数。

我已经阅读了一些帖子,建议将这个函数包装在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)时,我都会收到错误消息:&#34; BASIC运行时错误。未定义子程序或功能程序。&#34;

这甚至可能吗?使用Basic是正确的方法吗?这样做有更直接(优雅吗?)的方式吗?

谢谢,

卢卡斯

1 个答案:

答案 0 :(得分:3)

这里有一个很好的答案:How can I call a Python macro in a cell formula in OpenOffice.Org Calc?在你的情况下,基本代码应该是:

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

是的,有更直接/更优雅的方式:Create an Add-In