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 中打开的所有文件中可用。

LO Calc 中的 YLC 实用程序菜单

LO Calc 中的 YLC 实用程序菜单

Excel 中的 YLC 实用程序菜单

Excel 中的 YLC 实用程序菜单