首页 > 解决方案 > xlwings 与 openpyxl 阅读 Excel 工作簿的区别

问题描述

我主要只使用 xlwings 打开 ( read-write) 工作簿(因为我阅读的工作簿有复杂的宏)。但是我最近开始使用 openpyxl 打开 ( read-only) 工作簿,因为我需要阅读数千个工作簿来抓取一些数据。

我注意到 xlwings 和 openpyxl 阅读工作簿的方式有很大的不同。我相信 xlwings 依赖于pywin32阅读工作簿。当您阅读带有xlwings.Book(<filename>)实际工作簿的工作簿时,就会打开。我有一种感觉,这是由于pywin32

但是,使用openpyxl.load_workbook(<filename>)工作簿时不会出现窗口。我有一种感觉,这是不使用的结果pywin32

除此之外,我没有进一步了解后端如何为每个库工作。有人可以对此有所了解吗?依赖xlwingspywin32阅读工作簿是否有好处/成本,而openpyxl不是似乎没有使用pywin32

标签: pythonexcelopenpyxlxlwings

解决方案


你是正确的,xlwings依赖于pywin32,而openpyxl没有。

打开pyxl

“.xlsx”excel 文件本质上是一个 zip 文件,其中包含多个根据 Microsoft 的OOXML 规范格式化的 XML 文件。使用此规范,可以创建一个能够以几乎任何编程语言直接读取/写入 excel 文件的程序。这是应用在的方法openpyxl:它使用python代码直接读/写excel文件。

xlwings

Microsoft Excel 应用程序可以由外部程序通过Win32 COM API启动和控制。该pywin32包提供了 Win32 COM 和 Python 之间的接口。通过带有正确 pywin32 命令的 python 脚本,您可以完全控制 Excel 应用程序(打开 excel 文件、从单元格中查询数据、将数据写入单元格、保存 excel 文件等)。pywin32您可以使用的命令镜像Excel VBA 命令,尽管使用 python 语法。

xlwings是(除其他外)一个用户友好的pywin32. 它介绍了几种简洁而强大的方法。一个示例是将 excel 单元格范围直接转换为 numpy 数组或 pandas 数据框(反之亦然)的方法。

概括

xlwings和之间的根本区别在于openpyxl,前者需要在您的计算机上安装 MS Excel,而后者则不需要。


推荐阅读