当前位置: 首页 > 后端技术 > Python

Excel+Python,魔力无穷

时间:2023-03-26 16:32:47 Python

本次介绍如何使用xlwings整合Python和Excel两大数据工具,更方便的处理日常工作。说起Excel,绝对是数据处理领域的王者。虽然它已经诞生了30多年,但全球仍有7.5亿忠实用户,而作为网红语言的Python却只有700万开发者。Excel是世界上最流行的编程语言。是的,你没看错,自从微软引入了LAMBDA来定义函数,Excel就可以实现编程语言算法,所以它是图灵完备的,就像JavaScript、Java、Python一样。Excel虽然是小规模数据场景下的刚需工具,但是面对大数据的时候就会有些力不从心了。我们知道一个Excel表格最多可以显示1048576行16384列,处理一个几十万行的表格可能会有点卡。当然,你可以使用VBA进行数据处理,也可以使用Python来操作Excel。这就是本文的主题,Python的第三方库——xlwings,作为Python与Excel的交互工具,可以让你通过VBA轻松调用Python脚本,实现复杂的数据分析。例如自动导入数据:或者随机匹配文本:1.为什么要将Python与ExcelVBA集成?作为Excel内置的宏语言,VBA几乎无所不能,包括自动化、数据处理、分析建模等。那么为什么要用Python来集成ExcelVBA呢?主要有以下三个原因:如果你不精通VBA,可以不用VBA直接用Python写Excel计算的分析函数;Python运行速度比VBA快,代码编写更简洁灵活;Python库中有很多优秀的第三方库,可以节省大量编码时间;对于Python爱好者来说,pandas和numpy等数据科学库可能非常熟悉。如果能用于Excel数据分析,那就更厉害了。2、为什么要用xlwings?Python中有很多可以操作Excel的库,比如xlsxwriter、openpyxl、pandas、xlwings等。但是相比其他库,xlwings的性能几乎是整体最好的,而且xlwings可以通过Excel宏调用Python代码。xlwings的介绍这里就不多解释了。还不明白的可以看看我之前写的入门介绍:xlwings,让excel飞起来!安装xlwings非常简单。可以在命令行通过pip快速安装:pipinstallpython安装xlwings后,需要安装xlwings的Excel集成插件。安装前需要关闭所有Excel应用,否则会报错。同样在命令行输入如下命令:xlwingsaddininstall如果出现如下提示,则说明集成插件安装成功。xlwings及插件安装完成后,此时打开Excel,你会发现工具栏上多了一个xlwings菜单框,说明xlwings插件安装成功,起到了VBA调用的桥梁作用Python脚本。另外,如果你的菜单栏没有显示“Developer”,你需要在功能区中添加“Developer”,因为我们会用到宏。步骤很简单:1.在“文件”选项卡上,转到“自定义>选项”。2.在“自定义功能区”和“主选项卡”下,选中“开发人员”复选框。菜单栏显示开发人员工具,您可以开始使用宏。如果不知道什么是宏,可以暂时理解为自动化、批处理的工具。至此,准备工作完成,接下来就是实战了!3、玩玩xlwings想在excel中调用python脚本,需要自己写一个VBA程序来实现,但是对于不懂VBA的朋友来说是一件很麻烦的事情。但是xlwings解决了这个问题。无需编写VBA代码,直接在excel中调用python脚本,将结果输出到excel表中。xlwings会帮你创建.xlsm和.py两个文件,在.py文件中编写python代码,在.xlsm文件中点击execute即可完成excel与python的交互。如何创建这两个文件?很简单,直接在命令行输入如下代码即可:xlwingsquickstartProjectName这里的ProjectName可以自定义,是创建文件的名称。如果要在指定文件夹中创建文件,需要提前将命令行导航到指定目录。创建完成后,指定文件夹下会出现两个文件,就是前面提到的.xlsm和.py文件。我们打开.xlsm文件,这是一个excel宏文件。xlwings已经为你提前写好了调用Python的VBA代码。按快捷键Alt+F11调出VBA编辑器。SubSampleCall()mymodule=Left(ThisWorkbook.Name,(InStrRev(ThisWorkbook.Name,".,-1,vbTextCompare)-1))RunPython"import"&mymodule&";"&mymodule&".main()"EndSub中的代码串主要执行两步:1.在.xlsm文件的相同位置找到同名的.py文件2.在.xlsm文件中调用main()函数.py脚本。先看一个简单的例子,自动在excel表中输入['a','b','c','d','e']第一步:我们将.py文件中的代码改成如下形式。importxlwingsasxwimportpandasaspddefmain():wb=xw.Book.caller()values=['a','b','c','d','e']wb.sheets[0].范围('A1').value=values@xw.funcdefhello(name):returnf"Hello{name}!"ifname=="__main__":xw.Book("PythonExcelTest.xlsm").set_mock_caller()main()然后在.xlsm文件sheet1中创建一个按钮,并将默认宏设置为触发按钮。设置触发按钮后,我们直接点击,会发现第一行出现了['a','b','c','d','e']。同样,我们也可以将鸢尾花数据集自动导入到excel中,只需更改.py文件中的代码即可,代码如下:importxlwingsasxwimportpandasaspddefmain():wb=xw.Book.caller()df=pd.read_csv(r"E:\\test\\PythonExcelTest\\iris.csv")df['total_length']=df['sepal_length']+df['petal_length']wb.sheets[0].range('A1').value=df@xw.funcdefhello(name):returnf"Hello{name}!"ifname=="__main__":xw.Book("PythonExcelTest.xlsm").set_mock_caller()main()好了,这就是在excel中调用一个Python脚本的整个过程。你可以尝试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动报告等等。Excel+Python简直无边无际。