【Python】如何在Excel中调用Python脚本,实现数据自动化处理
这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作。
说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5亿忠实用户,而作为网红语言的Python,也仅仅只有700万的开发人员。
Excel是全世界最流行的编程语言。对,你没看错,自从微软引入了LAMBDA定义函数后,Excel已经可以实现编程语言的算法,因此它是具备图灵完备性的,和JavaScript、Java、Python一样。
虽然Excel对小规模数据场景来说是刚需利器,但它面对大数据时就会有些力不从心。
我们知道一张Excel表最多能显示1048576行和16384列,处理一张几十万行的表可能就会有些卡顿,当然你可以使用VBA进行数据处理,也可以使用Python来操作Excel。
这就是本文要讲到的主题,Python的第三方库-xlwings,它作为Python和Excel的交互工具,让你可以轻松地通过VBA来调用Python脚本,实现复杂的数据分析。
比如说自动导入数据:
或者随机匹配文本:
一、为什么将Python与Excel VBA集成?
VBA作为Excel内置的宏语言,几乎可以做任何事情,包括自动化、数据处理、分析建模等等,那为什么要用Python来集成Excel VBA呢?主要有以下三点理由:
如果你对VBA不算精通,你可以直接使用Python编写分析函数用于Excel运算,而无需使用VBA;
Python相比VBA运行速度更快,且代码编写更简洁灵活;
Python中有众多优秀的第三方库,随用随取,可以节省大量代码时间;
对于Python爱好者来说,pandas、numpy等数据科学库用起来可能已经非常熟悉,如果能将它们用于Excel数据分析中,那将是如虎添翼。
二、为什么使用xlwings?
Python中有很多库可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。
但相比其他库,xlwings性能综合来看几乎是最优秀的,而且xlwings可以实现通过Excel宏调用Python代码。
图片来自早起Python
xlwings的入门使用这里不多做讲解,如果大家还不了解,先看看我之前写的入门介绍:xlwings,让excel飞起来!
安装xlwings非常简单,在命令行通过pip实现快速安装:
pip install python
安装好xlwings后,接下来需要安装xlwings的 Excel集成插件,安装之前需要关闭所有 Excel 应用,不然会报错。
同样在命令行输入以下命令:
xlwings addin install
出现下面提示代表集成插件安装成功。
xlwings和插件都安装好后,这时候打开Excel,会发现工具栏出现一个xlwings的菜单框,代表xlwings插件安装成功,它起到一个桥梁的作用,为VBA调用Python脚本牵线搭桥。
另外,如果你的菜单栏还没有显示“开发工具”,那需要把“开发工具”添加到功能区,因为我们要用到宏。
步骤很简单:
1、在"文件"选项卡上,转到"自定义>选项"。
2、在“自定义功能区”和“主选项卡”下,选中“开发工具”复选框。
菜单栏显示开发工具,就可以开始使用宏。
如果你还不知道什么是宏,可以暂且把它理解成实现自动化及批量处理的工具。
到这一步,前期的准备工作就完成了,接下来就是实战!
三、玩转xlwings
要想在excel中调用python脚本,需要写VBA程序来实现,但对于不懂VBA的小伙伴来说就是个麻烦事。
但xlwings解决了这个问题,不需要你写VBA代码就能直接在excel中调用python脚本,并将结果输出到excel表中。
xlwings会帮助你创建
.xlsm
和.py
两个文件,在.py
文件里写python代码,在.xlsm
文件里点击执行,就完成了excel与python的交互。怎么创建这两个文件呢?非常简单,直接在命令行输入以下代码即可:
xlwings quickstart ProjectName
这里的
ProjectName
可以自定义,是创建后文件的名字。如果你想把文件创建到指定文件夹里,需要提前将命令行导航到指定目录。
创建好后,在指定文件夹里会出现两个文件,就是之前说的
.xlsm
和.py
文件。我们打开
.xlsm
文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。按快捷键
Alt + F11
,就能调出VBA编辑器。Sub SampleCall()mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))RunPython "import " & mymodule & ";" & mymodule & ".main()" End Sub
里面这串代码主要执行两个步骤:
1、在
.xlsm
文件相同位置查找相同名称的.py
文件2、调用
.py
脚本里的main()
函数我们先来看一个简单的例子,自动在excel表里输入
['a','b','c','d','e']
第一步:我们把
.py
文件里的代码改成以下形式。import xlwings as xw import pandas as pddef main():wb = xw.Book.caller()values = ['a','b','c','d','e']wb.sheets[0].range('A1').value = values@xw.func def hello(name):return f"Hello {name}!"if __name__ == "__main__":xw.Book("PythonExcelTest.xlsm").set_mock_caller()main()
然后在
.xlsm
文件sheet1
中创建一个按钮,并设置默认的宏,变成一个触发按钮。设置好触发按钮后,我们直接点击它,就会发现第一行出现了
['a','b','c','d','e']
。同样的,我们可以把鸢尾花数据集自动导入到excel中,只需要在.py文件里改动代码即可,代码如下:
import xlwings as xw import pandas as pddef main():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.func def hello(name):return f"Hello {name}!"if __name__ == "__main__":xw.Book("PythonExcelTest.xlsm").set_mock_caller()main()
好了,这就是在excel中调用Python脚本的全过程,你可以试试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动化报告等等。
Excel+Python,简直法力无边。
参考medium文章
往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑 AI基础下载机器学习的数学基础专辑黄海广老师《机器学习课程》视频课 本站qq群851320808,加入微信群请扫码:
【Python】如何在Excel中调用Python脚本,实现数据自动化处理相关推荐
- excel调用python编程-如何在excel中调用python脚本
如何在excel中调用python脚本 发布时间:2020-07-03 14:15:28 来源:亿速云 阅读:155 如何在excel中调用python脚本?针对这个问题,这篇文章详细介绍了相对应的分 ...
- 如何在Excel中调用Python脚本,实现数据自动化处理!
大家好, 这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球 ...
- 如何在Excel中调用Python脚本,实现数据自动化处理
这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5 ...
- 在Excel中调用Python脚本,实现数据自动化处理
说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5亿忠实用户,而作为网红语言的Python,也仅仅只有700万的开发人员. Excel是全世界最流行的编程语言 ...
- python能在excel运行吗-用ExcelPython在Excel中调用Python
Python部落组织翻译, 禁止转载 [介绍] ExclePython是一款轻量级的COM库,它支持你从Excel VBA中调用Python代码和运行Python 其他功能(确实任何语言都支持COM) ...
- python中execute函数_在excel中调用python函数
效果: 通过excel引用在py文件中写好的load_settle()函数,可以快捷的获取对应的历史结算价. 使用方法: 1.首先安装office,我用的是2016版本. 2.安装python,推荐使 ...
- 使用xlwings插件在Excel中调用Python
xlwings官方文档: 英文版:https://docs.xlwings.org/en/stable/# 中文版:https://www.kancloud.cn/gnefnuy/xlwings-do ...
- Python如何在main中调用函数内的函数
Python如何在main中调用函数内的函数 一般在Python中在函数中定义的函数是不能直接调用的,但是如果要用的话怎么办呢? 一般情况下: def a():#第一层函数def b():#第二层函数 ...
- webbrowser控件 有数据 但页面空白_如何在Excel中实现可以切换不同数据系列的滚珠图?...
▲更多精彩内容,请点击上方Excel小铲子▲ 操作系统版本 Windows 10 64位 Excel版本 Microsoft Excel 2016 64位 案例文档下载 链接:https://pan. ...
最新文章
- HDU1083(二分图-匈牙利算法)
- 给你一天时间,如何理清AI圈儿现状?
- 【计算理论】计算理论总结 ( 自动机设计 ) ★★
- VMware vSphere Client 5.0在官网用讯雷下载出错
- java.util.regex_java.util.regex.PatternSyntaxException:索引附近的...
- php设计模式之桥接模式
- 学python还有机会吗_此时此刻,拥有一套全方面学习Python的机会是怎样一种体验?...
- Linux samba服务
- JDBC01 mysql和navicat的安装
- Java基础,Java的main方法与构造方法之间的联系,以及构造方法的联系和使用,栈堆理解
- STC学习:定时器和中断
- java中的Map每次只能put一次,写段增强的put,可以一次put很多次
- python模拟支付宝蚂蚁森林的能量产生过程_蚂蚁森林能量产生规则
- 汇编dos系统调用(输入输出篇)
- ElasticSearch 7.15.2 使用java canal 接入实现灵活化增量数据准实时同步
- word如何给多张图片批量添加边框
- Linux网络管理18:DHCP服务器
- ffmpeg视频添加meta信息
- vsCode格式化html代码
- 大一第一学期总结:既然选择了远方,便只顾风雨兼程
热门文章
- phpcms v9的url优化
- 进击的UI---------------------UIStepper(加减)
- nginx中的try_files指令解释
- codeforces#236_div2_A nuts 贪心
- 跟公务员稍稍的接触了下
- UNWAVERING SPIRIT AND VALUES
- Turtle库的学习积累
- vue-manage-system 后台管理系统开发总结
- Python其他数据结构collection模块-namtuple defaultdict deque Queue Counter OrderDict arrary
- java之jsp页面语法