TOP

我们为 LibreOffice Calc 创建一个 Python 函数

描述

LibreOffice Calc 允许用户使用内置的 StarBasic 编程语言创建自己的函数。这种语言非常类似于 VBA 然而,由于很少使用,因此功能有限。

现代编程语言,例如 Python,提供了更多的可能性,并且拥有适用于所有场合的更广泛的附加库。

那么,让我们了解如何使用当今流行的编程语言(如 Python)创建自己的函数。


办公程序包 LibreOffice 允许您使用 Python、JavaScript、C++、Java 等第三方编程语言创建自己的功能。

StarBASIC Greeting() 函数的代码

首先,让我们回顾一下如何使用标准 LibreOffice Calc 工具编写宏和函数来编写自己的程序。

下面是该函数的代码 Greeting ,它返回一个短语 "Hello " + 输入参数 使用内置编程语言 StarBasic 进入选定的单元格。

要添加您自己的功能,请打开菜单 Tools - Macros - Edit Macros... ,选择 Module1 并将以下文本复制到模块中:

Function Greeting(sName As String) As String
    Greeting = "Hello " & sName & "!"
End Function

然后,关闭 Macro Editor,返回到 LibreOffice Calc 并在任意单元格中输入该函数的名称并指定输入参数。

Python 文件夹

在 Python 上编写函数之前,我们需要首先创建一个 *.py 文件( myPyScripts.py )在以下文件夹中:

%APPDATA%\LibreOffice\4\user\scripts\python

如果文件夹 脚本 Python 缺少,您需要手动创建它们。

Python Greeting() 函数的代码

以下是该函数的 Python 脚本 Greeting ,规定了短语 "Python say 'Hello' to " + 输入参数 在程序 LibreOffice Calc 中选定的单元格中。

要添加此脚本,请打开文件 myPyScripts.py 借助于 Notepad++ (或者 Windows Notepad) 并复制以下文本:

def Greeting(sName):
    return "Python say 'Hello' to " + sName + "!"

然后,关闭它 Notepad++ 并返回LibreOffice Calc。

我们无法立即运行此函数,因为 LO Calc 接口没有与 Python 函数的直接连接。

为了解决这个问题,我们需要在StarBasic上创建一个中间函数:

Function Greeting(sName As String) As String
    pyFile = "myPyScripts.py"
	pyFunc = "Greeting"
	pyParams = Array(sName)
	
	ScriptProvider = CreateUNOService("com.sun.star.script.provider.MasterScriptProviderFactory").createScriptProvider("")
	pyScript = ScriptProvider.getScript("vnd.sun.star.script:" & pyFile & "$" & pyFunc & "?language=Python&location=user")
    Greeting = pyScript.invoke(pyParams, Array(), Array())
End Function

将此中间函数添加到 StarBasic 宏编辑器(菜单 Tools - Macros - Edit Macros... )。

现在调用 StarBasic 函数 Greeting() ,它又调用该函数的 Python 版本 Greeting() 。只需输入 Greeting() 进入任何单元格并选择任何值作为参数。

使用扩展

您也可以使用现成的套件 功能 公用事业 写在 Python 通过安装扩展 YLC Utilities

此后,此功能将在 LibreOffice Calc 中打开的所有文件中可用。