python - xlwings 与 openpyxl 阅读 Excel 工作簿的区别
问题描述
我主要只使用 xlwings 打开 ( read-write
) 工作簿(因为我阅读的工作簿有复杂的宏)。但是我最近开始使用 openpyxl 打开 ( read-only
) 工作簿,因为我需要阅读数千个工作簿来抓取一些数据。
我注意到 xlwings 和 openpyxl 阅读工作簿的方式有很大的不同。我相信 xlwings 依赖于pywin32
阅读工作簿。当您阅读带有xlwings.Book(<filename>)
实际工作簿的工作簿时,就会打开。我有一种感觉,这是由于pywin32
。
但是,使用openpyxl.load_workbook(<filename>)
工作簿时不会出现窗口。我有一种感觉,这是不使用的结果pywin32
。
除此之外,我没有进一步了解后端如何为每个库工作。有人可以对此有所了解吗?依赖xlwings
和pywin32
阅读工作簿是否有好处/成本,而openpyxl
不是似乎没有使用pywin32
?
解决方案
你是正确的,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,而后者则不需要。
推荐阅读
- sockets - windows 10当前使用了多少个socket
- node.js - npm install chromedriver 无法正常工作
- android - 空检查后的 Uri null - SMS 内容提供程序 [Android SDK 30+]
- java - 如果具有所有依赖项,则无法在 Spring 中创建 .jsp 文件?
- octave - 如何重新设计八度
- node.js - SyntaxError: Unexpected token ':' 运行迁移时
- javascript - JavaScript 删除数字前面的零
- python - Pyqt5没有安装
- jupyter - 安装后无法在 jupyter 中打开 Octave 内核
- html - 在引导列中创建固定的可滚动侧边栏