python - 从 LibreCalc 中调用 python 函数

标签 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->Macro->Organize Macro->Python下也能看到

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) 时,我都会收到一条错误消息:“基本运行时错误。未定义子过程或函数过程。”

这可能吗?使用 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/

相关文章:

javascript - 为什么每次读取属性时都不会重新评估对象初始值设定项中的表达式?

MySQL 错误 1415

.net - 如何让外部加载项轻松与 .net 3.0 应用程序连接?

python - 尝试使用 os.path 通过文件搜索创建 CSV 文件

python - PySpark 插入到覆盖

c程序函数无法正常工作

c# - 在 Visual Studio 加载项中 - 如何检索文本选择对象的属性 (Visual Commander)

c++ - 在 PowerPoint 加载项中获取演示文稿大小

python - Scrapy 爬虫,去除字符串中的逗号

python - (Pandas) 删除由 GroupBy 创建的重复组