当前位置:   article > 正文

如何在Excel中调用Python脚本,实现数据自动化处理!

python怎么实现表格数据变化脚本里数值变化

大家好,

这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作。8edf24488d83aeee91ed9cb2ffd560ed.png

说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5亿忠实用户,而作为网红语言的Python,也仅仅只有700万的开发人员。

Excel是全世界最流行的编程语言。对,你没看错,自从微软引入了LAMBDA定义函数后,Excel已经可以实现编程语言的算法,因此它是具备图灵完备性的,和JavaScript、Java、Python一样。

虽然Excel对小规模数据场景来说是刚需利器,但它面对大数据时就会有些力不从心。

我们知道一张Excel表最多能显示1048576行和16384列,处理一张几十万行的表可能就会有些卡顿,当然你可以使用VBA进行数据处理,也可以使用Python来操作Excel。

这就是本文要讲到的主题,Python的第三方库-xlwings,它作为Python和Excel的交互工具,让你可以轻松地通过VBA来调用Python脚本,实现复杂的数据分析。

比如说自动导入数据:15c0bc71ce49925dd3c113b7f0cad143.gif

或者随机匹配文本:452dca6034433f81eaef4c0e99f0a625.gif

一、为什么将Python与Excel VBA集成?

VBA作为Excel内置的宏语言,几乎可以做任何事情,包括自动化、数据处理、分析建模等等,那为什么要用Python来集成Excel VBA呢?主要有以下三点理由:

  1. 如果你对VBA不算精通,你可以直接使用Python编写分析函数用于Excel运算,而无需使用VBA;

  1. Python相比VBA运行速度更快,且代码编写更简洁灵活;

  1. Python中有众多优秀的第三方库,随用随取,可以节省大量代码时间;

对于Python爱好者来说,pandas、numpy等数据科学库用起来可能已经非常熟悉,如果能将它们用于Excel数据分析中,那将是如虎添翼。

二、为什么使用xlwings?

Python中有很多库可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。

但相比其他库,xlwings性能综合来看几乎是最优秀的,而且xlwings可以实现通过Excel宏调用Python代码。

4e113093a36e0d8a6056d217bcf2b65a.png
图片来自早起Python
1dca2a1a9d389adf157691dd32be7fd4.png

xlwings的入门使用这里不多做讲解。

安装xlwings非常简单,在命令行通过pip实现快速安装:

pip install python

安装好xlwings后,接下来需要安装xlwings的 Excel集成插件,安装之前需要关闭所有 Excel 应用,不然会报错。

同样在命令行输入以下命令:

xlwings addin install

出现下面提示代表集成插件安装成功。db5c1973136e888bb1c41c341ef0f9e9.png

xlwings和插件都安装好后,这时候打开Excel,会发现工具栏出现一个xlwings的菜单框,代表xlwings插件安装成功,它起到一个桥梁的作用,为VBA调用Python脚本牵线搭桥。

51582099d14beb596a8eb32d724dc14a.png

另外,如果你的菜单栏还没有显示“开发工具”,那需要把“开发工具”添加到功能区,因为我们要用到宏。

步骤很简单:

1、在"文件"选项卡上,转到"自定义>选项"。

2、在“自定义功能区”和“主选项卡”下,选中“开发工具”复选框。

5e47124f3a22ec7ac53f206cc2a3a0f3.png

菜单栏显示开发工具,就可以开始使用宏。

如果你还不知道什么是宏,可以暂且把它理解成实现自动化及批量处理的工具。

到这一步,前期的准备工作就完成了,接下来就是实战!

三、玩转xlwings

要想在excel中调用python脚本,需要写VBA程序来实现,但对于不懂VBA的小伙伴来说就是个麻烦事。

但xlwings解决了这个问题,不需要你写VBA代码就能直接在excel中调用python脚本,并将结果输出到excel表中。

xlwings会帮助你创建.xlsm.py两个文件,在.py文件里写python代码,在.xlsm文件里点击执行,就完成了excel与python的交互。

怎么创建这两个文件呢?非常简单,直接在命令行输入以下代码即可:

xlwings quickstart ProjectName

这里的ProjectName可以自定义,是创建后文件的名字。

0b9a37ec3aa7ca42ac7b37b13c1b37c1.png

如果你想把文件创建到指定文件夹里,需要提前将命令行导航到指定目录。

创建好后,在指定文件夹里会出现两个文件,就是之前说的.xlsm.py文件。

c99bf9df7b786c212715afefec416806.png

我们打开.xlsm文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。

按快捷键Alt + F11,就能调出VBA编辑器。fde02cb01fe43da55bb52c209e830c78.png

  1. Sub SampleCall()
  2. mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))
  3. RunPython "import " & mymodule & ";" & mymodule & ".main()"
  4. End Sub

里面这串代码主要执行两个步骤:

1、在.xlsm文件相同位置查找相同名称的.py文件 

2、调用.py脚本里的main()函数

我们先来看一个简单的例子,自动在excel表里输入['a','b','c','d','e']

第一步:我们把.py文件里的代码改成以下形式。

  1. import xlwings as xw
  2. import pandas as pd
  3. def main():
  4.     wb = xw.Book.caller()
  5.     values = ['a','b','c','d','e']
  6.     wb.sheets[0].range('A1').value = values
  7. @xw.func
  8. def hello(name):
  9.     return f"Hello {name}!"
  10. if __name__ == "__main__":
  11.     xw.Book("PythonExcelTest.xlsm").set_mock_caller()
  12.     main()

然后在.xlsm文件sheet1中创建一个按钮,并设置默认的宏,变成一个触发按钮。

95af7218176143dc6e2fa1d8b9ff06b3.png8ba8f99c9121ec26c816a268576db05e.png071062d5e28bcc05c68253a16b4f364b.png

设置好触发按钮后,我们直接点击它,就会发现第一行出现了['a','b','c','d','e']

b6c7302a8ea4757c1f3801d5aba6fb62.gif

同样的,我们可以把鸢尾花数据集自动导入到excel中,只需要在.py文件里改动代码即可,代码如下:

  1. import xlwings as xw
  2. import pandas as pd
  3. def main():
  4.     wb = xw.Book.caller()
  5.     df = pd.read_csv(r"E:\\test\\PythonExcelTest\\iris.csv")
  6.     df['total_length'] =  df['sepal_length'] + df['petal_length']
  7.     wb.sheets[0].range('A1').value = df
  8. @xw.func
  9. def hello(name):
  10.     return f"Hello {name}!"
  11. if __name__ == "__main__":
  12.     xw.Book("PythonExcelTest.xlsm").set_mock_caller()
  13.     main()
bf7a554baaa61ad8a72ec7f2a8dbae85.gif

好了,这就是在excel中调用Python脚本的全过程,你可以试试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动化报告等等。

Excel+Python,简直法力无边。

参考medium文章

 
 

 
 
  1. 推荐阅读:
  2. 入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
  3. 干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
  4. 趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
  5. AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
  6. 小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/362716
推荐阅读
相关标签
  

闽ICP备14008679号