【发布时间】:2016-02-13 17:58:03
【问题描述】:
我正在尝试找出对于类似任务来说哪一个通常更快:使用 VBA 或 openpyxl。
我知道这可能取决于您想要完成的任务,但是假设我有一张宽 50 个单元格、高 150,000 个单元格的表格,我想将它从工作簿 A 复制到工作簿 B。强>
对于 python 是否会做得更好或 Excel 是否更好地处理自己有什么想法?
我的直觉告诉我,python 应该更快出于某些原因:
- 为了让子从工作簿复制到另一个,两者都应该打开并运行,而使用 python 我可以简单地加载两者;
- VBA 必须处理大多数任务的混乱情况,并且需要大量的系统资源
除此之外,我想知道是否可以对 openpyxl 脚本做一些进一步的改进,比如多线程,或者可能同时使用 NumPy。
感谢您的帮助!
【问题讨论】:
-
回答您的问题的最简单方法是对两种方法都计时。无需猜测。 “VBA 必须处理大多数任务的大量混乱,并且需要大量的系统资源”——这是基于什么?
-
我不是最有经验的 VBA 编码器,但根据我的经验和我所知道的,使 VBA 高效是一项非常艰巨的任务,而且管理大量数据通常会变得非常慢。另外,我开始用两种资源编写这个例程,对于 VBA,我需要打开两个电子表格,每次我需要处理另一个电子表格时都必须激活它们,它会立即刷新,等等
-
我会说,如果您没有使用 VBA 的经验,那么绝对有可能使 VBA 效率低下,但对于任何语言都可以这样说。 VBA 在性能方面的一大优势是它在与 Excel 相同的进程中运行,因此没有与从 VBA 自动化 excel 相关的跨进程开销:如果您进行大量调用,这可能会变得非常重要Excel 来自另一个进程。尽可能使用数组而不是逐个单元格可以帮助减少这种情况,但这绝对是一个因素。
-
我认为这是我的情况。我使用 Python 比使用 VBA 更舒服。此外,我想我必须对每个文件进行一次调用