【问题标题】:Calling a python function from within LibreCalc从 LibreCalc 中调用 python 函数
【发布时间】:2016-09-17 03:06:13
【问题描述】:

我在一个名为 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 运行时错误。未定义子过程或函数过程。”

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

谢谢,

卢卡斯

【问题讨论】:

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


    【解决方案1】:

    这里有一个很好的答案: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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 2020-08-17
      • 2017-04-22
      • 1970-01-01
      相关资源
      最近更新 更多