python - 是否可以从 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 宏,例如转到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插件有助于运行和组织代码。
推荐阅读
- java - 相同类和相同实现但不同对象类型作为参数的 JAVA 方法
- python - DRF中如何将相关模型放入序列化器的一个字段中?
- linux - 对 csv 文件的第 2 列求和,其中第 1 列具有相同的值
- docker - 在 Win 8.1 上使用 Docker 运行 PhpStorm:客户端向 HTTPS 服务器发送 HTTP 请求
- javascript - 如何使用javascript仅为特定客户的最后插入行显示编辑按钮
- node.js - 自动获取 sequelize 模型中的所有表列
- python-3.x - python字符串替换中的SQL UPDATE部分有效
- git - GIT:其他分支的检出文件并自动在其前面加上分支名称
- c - 将字符数组缓冲区作为十六进制存储在 C 中的 uint32_t 缓冲区中
- zeromq - dlmopen 导致 zmq 错误“系统调用中断”