【问题标题】:How to embed python scripts into LibreOffice Calc如何将 python 脚本嵌入 LibreOffice Calc
【发布时间】:2022-01-26 18:49:00
【问题描述】:

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

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

我安装了 APSO (tq!),我相信它可以让我嵌入可编辑的 python 用户脚本。当我点击我在工作表中制作的可编程按钮时,我希望脚本能够运行。

我将脚本保存在 /home/USER/.config/libreoffice/4/user/Scripts/python 中,该脚本是根据 2021 年 LO 会议上 ScriptForge“代码助手”软件的说明制作的。

在宏选择器窗口的“我的宏”下,我看到了我的脚本,但我拒绝访问“确定”按钮(灰显),但我可以从“LibOCon_2021. py" ScriptForge 文件。

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

那么,当我点击按钮时,我如何真正嵌入我的脚本并让它运行呢?

【问题讨论】:

    标签: libreoffice calc


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢吉姆。我简直不敢相信......看起来 LO 似乎没有让我看到模块,因此里面的 .py 脚本 - 它似乎是灰色的。我发现这只是因为宏选择/APSO 窗口太小,也显示了我的电子表格的“扩展”子部分,这些子部分显示在窗口的底部。现在可以了!我早些时候遇到过这个问题,所以放弃了它,最后在这里问。多谢。在我面前再次展示了一个巨大的电子表格的机会世界......谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多