xlwings 与 openpyxl 阅读 Excel 工作簿之间的差异

Differences between xlwings vs openpyxl Reading Excel Workbooks

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

我注意到 xlwings 和 openpyxl 读取工作簿的方式有很大差异。我相信 xlwings 依靠 pywin32 来阅读工作簿。当您使用 xlwings.Book(<filename>) 阅读工作簿时,将打开实际的工作簿。我感觉这是 pywin32.

的结果

但是,当使用 openpyxl.load_workbook(<filename>) 时,工作簿 window 不会出现。我觉得这是没有使用 pywin32.

的结果

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

你是对的,xlwings relies on pywin32, whereas openpyxl 没有。

openpyxl

“.xlsx”excel 文件本质上是一个包含多个 XML 文件的 zip 文件,其格式根据 Microsoft 的 OOXML specification。有了这个规范,就可以用几乎任何编程语言创建一个能够直接 reading/writing excel 文件的程序。这是 openpyxl 中应用的方法:它使用 python 代码直接到 read/write excel 文件。

xlwings

Microsoft Excel 应用程序可以通过 Win32 COM API. The pywin32 package provides an interface between Win32 COM and Python. Through a python script with the right pywin32 commands you can fully control an Excel Application (open excel files, query data from cells, write data to cells, save excel files, etc.). The pywin32 commands that you can use mirror the Excel VBA commands 由外部程序启动和控制,尽管使用 python 语法。

xlwings 是(除其他外)围绕 pywin32 的用户友好包装器。它介绍了几种简洁而强大的方法。一个示例是将 excel 单元格范围的 conversion 直接指向 numpy 数组或 pandas 数据帧(反之亦然)的方法。

总结

xlwingsopenpyxl 之间的根本区别是前者要求您的计算机上安装 MS Excel,而后者则不需要。