如何将 python 脚本嵌入 LibreOffice Calc

How to embed python scripts into LibreOffice Calc

我有一个成功的 .py 脚本可以打开现有的 LO Calc 文档(保存为 .xlsx 以便我可以使用 openpyxl),它将信息附加到文件中,该文件保存文件并在脚本终止时将其关闭.脚本 运行s 时无法打开 .xlsx 文件,否则文件已损坏且所有数据丢失。

但我真正需要的是能够看到填充价差的数据sheet,这样我就可以有一个动态图表直观地显示信息。

我安装了 APSO (tq!),我相信它可以让我嵌入可编辑的 python 用户脚本。当我单击我在 sheet.

中制作的可编程按钮时,我希望脚本运行

我将脚本保存在 /home/USER/。config/libreoffice/4/user/Scripts/python 这是我根据来自 LO Conference 2021 的 ScriptForge 'code assistant' 软件的说明制作的。

在宏 select 或 window 的“我的宏”下,我看到了我的脚本,但我无法访问“确定”按钮(变灰),但我我能够 select 来自“LibOCon_2021.py” ScriptForge 文件的脚本。

将我的 .py 脚本与“LibOCon_2021.py”中的脚本进行比较,似乎不同之处在于我的脚本没有定义,所以在我的脚本顶部添加了“def to_be_embedded(args=None):" 并保存了它,但是“确定”按钮仍然不可用,所以我无法将它与按钮按下联系起来。

那么,当我单击按钮时,如何实际嵌入我的脚本并将其发送到 运行?

以下是创建运行嵌入式 python 宏的按钮的步骤。

  1. 创建一个新的 Calc 电子表格。甚至不需要保存此示例即可运行,但如果您保存,则使用 .ods 格式。
  2. 安装 APSO 后,转到 工具 -> 宏 -> 组织 python 脚本
  3. Select "Untitled 1" 在此处嵌入宏,然后在菜单中,select 创建模块 并确定。 (这嵌入在电子表格文件中,与您的问题不同,脚本被放置在 LibreOffice 用户目录中,这就是“我的宏”的意思)。
  4. Select 新创建的名为“模块”的文件和菜单现在将包含不同的选项。 Select 编辑。如果这不起作用,请将 APSO 配置为使用正确的文本编辑器。
  5. 输入以下代码并保存(例如 :w 如果使用 vim)。
def test(args=None):
    raise Exception("Hello from Python!")
  1. 在表单控件工具栏中,创建一个按钮。 Calc 必须处于设计模式才能执行此操作。
  2. 右键单击按钮并选择控件属性。在 Events、select Execute action 旁边的点,然后按 Macro。展开“Untitled 1”和 select“Module”,其中“test”将显示为宏名称。按确定。

现在关闭设计模式并单击按钮。我们可以看到它运行了,因为它产生了以下消息:

com.sun.star.uno.RuntimeException: Error during invoking function test in
module vnd.sun.star.tdoc:/1/Scripts/python/Module.py (<class 'Exception'>:
Hello from Python!