说到xlwings包,不得不说一说Excel VBA。Excel VBA一直是Excel用于拓展Excel的功能和让用户大幅提高工作效率的脚本编程语言,它与Excel对象模型相结合,实现强大的功能。Excel对象模型实际上由一些与Excel界面有关的对象组成,如工作簿对象、工作表对象、单元格对象等。VBA语言通过面向这些对象编程实现对Excel界面的操控。所以,Excel VBA脚本编程的核心,一个是VBA语言,另一个是Excel对象模型。
xlwings包可以看作是Python版的Excel对象模型。实际上,有人将Excel VBA语言操作的Excel对象模型改写成Python能用的组件,即Python的win32com包,xlwings包则在win32com包的基础上进行了二次封装。所以,VBA使用的Excel对象模型、Python的win32com包和xlwings包这三者实际上是一个东西。所以,我们说,基于xlwings包,Python语言能实现Excel VBA能做的绝大部分事情。
xlwings包与pandas包的区别在于,pandas包处理数据速度快、代码简洁,能处理大型数据、不依赖Excel软件,但不支持Excel对象模型;而xlwings包功能强大,VBA能做的它基本都能做,但是只能处理中小型数据,速度更慢,依赖Excel软件。实际工作中,将数据处理的工作交给pandas包,做报表等与工作表打交道的工作交给xlwings包。
在使用xlwings包之前,需要先安装它。在Windows下安装xlwings,使用下面的安装命令。
pip install xlwings
因为xlwings包实际上封装了win32com包,所以需要安装PyWin32包,请参见4.1.1小节的内容。