是否可以从 OPEN Libreoffice Calc 文件中读取数据?

问题描述

用户打开一个 Calc .ODS 文件

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

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

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

解决方法

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.htmlAPSO 插件有助于运行和组织代码。