首页 > 解决方案 > 是否可以从 OPEN Libreoffice Calc 文件中读取数据?

问题描述

用户打开一个 Calc .ODS 文件。

我的程序需要“实时”读取它的值,即在它打开的时候。

原因是它受密码保护,并且没有用于受密码保护的工作表的 python API。

pyexcel-ods 读取保存的文件,而不是打开的文件。

标签: pythonlibreofficelibreoffice-calc

解决方案


Python-UNO 是内置的 LO API。它提供了两种不同的方法来做到这一点。第一个更容易设置,但速度较慢。为此,请启动 LibreOffice Calc 侦听套接字。然后打开 python 提示符并输入import uno. 对于 GUI 线程和从 python 运行 API 命令,侦听 LO 实例都会变慢。

另一种方法是正常打开 LO Calc,然后从内部运行 python 宏,例如转到Tools -> Macros -> Run Macro。宏也可以从打开文档、按钮或按键等事件中运行。这更快,因为 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插件有助于运行和组织代码。


推荐阅读