python - 我需要安装 Excel 才能使用 Openpyxl "interactively"吗?它可以与 .ODS 格式交互吗?

标签 python excel numpy openpyxl libreoffice

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

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

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

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

谢谢

最佳答案

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

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

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

最后,如果基于 UNO 的方法实在太不稳定,而你又可以使用 Excel,那么你可以尝试 xlwings 。要让它在 Linux 中运行会相当复杂(它可能需要虚拟机;Wine 下的 Excel 的评价充其量是混杂的)。

关于python - 我需要安装 Excel 才能使用 Openpyxl "interactively"吗?它可以与 .ODS 格式交互吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46120283/

相关文章:

python:itertools.product 上的队列问题

python - 如何使用 python 重命名一堆文件?

python - 如何更改 seaborn 轴或图形级别图的图形大小

python - 在 cython 中调用 np.sqrt

python - 将嵌套循环计算转换为 Numpy 以加快速度

python - 如何访问 openpyxl 中的单元格值

arrays - Excel VBA 创建列表并仅添加唯一术语

excel - 列值总和的平均值

python - 将数组 datatime.datetime 转换为 float

python - 将此函数绘制为累积分布图