我在名为 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->Macro->Organize Macro->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 是正确的方法吗?有没有更直接(优雅?)的方法?
谢谢,
卢卡斯
最佳答案
这里有一个很好的答案: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 .
关于python - 从 LibreCalc 中调用 python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37336699/