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

Posted

技术标签:

【中文标题】我是不是需要安装 Excel 才能“交互式”使用 Openpyxl?它可以与 .ODS 格式交互吗?【英文标题】:Do I need to have Excel installed to use Openpyxl "interactively"? Can it interact with .ODS format?我是否需要安装 Excel 才能“交互式”使用 Openpyxl?它可以与 .ODS 格式交互吗? 【发布时间】:2017-09-08 15:51:27 【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

OpenPyXL 不需要也不能使用正在运行的 Excel 实例。 - 这意味着如果我的系统中没有安装 Excel,Openpyxl 可以工作吗? Openpyxl 将在工作表中读取和写入数据?请确认。

以上是关于我是不是需要安装 Excel 才能“交互式”使用 Openpyxl?它可以与 .ODS 格式交互吗?的主要内容,如果未能解决你的问题,请参考以下文章

C#导出excel 不安装office excel情况下

我的用户是不是需要安装数据库程序才能使用我的数据库程序?

我是不是需要安装 Speech SDK 才能进行语音识别,即使我使用的是 .NET Speech Recognition 命名空间?

MUI v5:我是不是需要安装 @emotion/react 或 @emotion/styled 才能使用 sx 道具?

我是不是需要将 dist 文件夹提交到 git 才能使用来自 git 的 pip 安装包?

Excel 文件阻止我在 IntelliJ Idea 中进行交互式变基