【发布时间】:2021-01-23 11:36:35
【问题描述】:
用户打开一个 Calc .ODS 文件。
我的程序需要“实时”读取它的值,即在它打开时。
原因是它受密码保护,并且没有用于受密码保护的工作表的 python API。
pyexcel-ods 读取保存的文件,而不是打开的文件。
【问题讨论】:
标签: python libreoffice libreoffice-calc
用户打开一个 Calc .ODS 文件。
我的程序需要“实时”读取它的值,即在它打开时。
原因是它受密码保护,并且没有用于受密码保护的工作表的 python API。
pyexcel-ods 读取保存的文件,而不是打开的文件。
【问题讨论】:
标签: python libreoffice libreoffice-calc
Python-UNO 是内置的 LO API。它提供了两种不同的方法来做到这一点。第一个更容易设置,但速度较慢。为此,请启动 LibreOffice Calc 侦听套接字。然后打开python提示符并输入import uno。对于 GUI 线程和从 python 运行 API 命令,侦听 LO 实例都会变慢。
另一种方法是正常打开 LO Calc,然后从内部运行 python 宏,例如转到 工具 -> 宏 -> 运行宏。宏也可以从打开文档、按钮或按键等事件中运行。这更快,因为 python 在与应用程序相同的进程中运行,而不需要通过套接字进行交互。
无论哪种方式,在 Windows 上,使用 LO 附带的 python 发行版,因为它包含胶水代码,可以导入 uno。这样做的一个缺点是您可能无法安装您可能想要的其他 python 包,例如lxml。 Linux 集成更好,因为系统范围的 python 可以加载 UNO 库,有时需要先安装一个包,具体取决于您的发行版。
教程位于http://christopher5106.github.io/office/2015/12/06/openoffice-libreoffice-automate-your-office-tasks-with-python-macros.html。 APSO 插件有助于运行和组织代码。
【讨论】: