我是否需要安装 Excel 才能“以交互方式”使用 Openpyxl?它可以与 .ODS 格式交互吗?

Unk*_*erd 2 python excel numpy libreoffice openpyxl

我目前编写了一个 Python 脚本,该脚本使用 UNO 与 LibreOffice .ods 文档进行交互。但是,它非常不稳定,会导致很多系统错误并在 Ubuntu 17.04 上崩溃。

我通读了 openpyxl 文档,但找不到这个快速问题的答案:我可以在 Ubuntu 上使用 openpyxl动态操作带有嵌入公式的 .XLSX 或 .ODS 文档吗?

即我想打开文档,从单元格中读取数据,在循环中更新单元格值,从文档自己的公式中读取新的输出数据,然后将此输出加载到一个 numpy 数组中并关闭文档而不保存它。

是否必须为 openpyxl 安装 Excel/libreoffice 才能以这种方式使用嵌入的公式?

谢谢

Joh*_*n Y 7

OpenPyXL 不需要也不能使用正在运行的 Excel 实例。它根本不与 .ods 交互。最接近 OpenPyXL 的 .ods 是pyexcel-ods。评估 Excel 公式的唯一实用方法是使用正在运行的 Excel 实例。同样,评估 LibreOffice 公式的唯一实用方法是运行 LibreOffice 实例。

因此,如果您想“以交互方式”使用 OpenPyXL 或 pyexcel-ods,则不必使用 Excel/LibreOffice 公式,而是使用 Python 进行所有计算。

如果您需要公式并且需要在 Linux 中运行它,那么以某种形式使用 UNO(以控制 LibreOffice 的运行实例)可能仍然是您最好的选择。请注意,UNO 有几个不同的 Python 接口,例如PyOOUnoTools。不知道你现在用什么

最后,如果基于 UNO 的方法真的太不稳定,并且您确实可以访问 Excel,那么您可以尝试xlwings。让它在 Linux 中运行会相当复杂(它可能需要一个虚拟机;在 Wine 下对 Excel 的推荐充其量是混合的)。