前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在Excel中调用Python脚本,实现数据自动化处理

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

作者头像
派大星的数据屋
发布于 2022-04-03 06:19:05
发布于 2022-04-03 06:19:05
4K00
代码可运行
举报
运行总次数:0
代码可运行

这次我们会介绍如何使用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呢?主要有以下三点理由:

    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代码。

图片来自早起Python

xlwings的入门使用这里不多做讲解,如果大家还不了解,先看看我之前写的入门介绍:xlwings,让excel飞起来!

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install python

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的交互。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xlwings quickstart ProjectName

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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文件里的代码改成以下形式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import xlwings as xw
import pandas as pd


def 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文件里改动代码即可,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import xlwings as xw
import pandas as pd

def 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文章

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在Excel中调用Python脚本,实现数据自动化处理
说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5亿忠实用户,而作为网红语言的Python,也仅仅只有700万的开发人员。
天道Vax的时间宝藏
2022/05/11
4.1K0
在Excel中调用Python脚本,实现数据自动化处理
xlwings:在Excel中集成Python
Github地址:https://github.com/xlwings/xlwings 在现代数据分析和报表生成中,Microsoft Excel仍然是一款非常流行和强大的工具。与此同时,Python作为一种高级编程语言,具备出色的数据处理和分析能力。那么,有没有一种方法可以将Excel和Python完美结合,以发挥它们各自的优势?答案是肯定的,而这个方法的关键就是xlwings。本文将介绍xlwings的基本概念、使用方法以及提供丰富的示例代码,以帮助大家充分利用xlwings来处理Excel数据。 xlwings是一个用于在Excel中集成Python的强大工具。它允许你在Excel中调用Python函数,将Python脚本嵌入到Excel工作簿中,以便在Excel中进行数据处理、分析和可视化。xlwings的目标是将Excel和Python进行无缝集成,可以充分利用两者的强大功能。
luckpunk
2025/01/18
1970
Python让Excel飞起来:使用Python xlwings实现Excel自动化
本文将向你展示如何使用Python xlwings库自动化Excel。毋庸置疑,Excel是一款非常棒的软件,具有简单直观的用户界面,而Python是一种强大的编程语言,在数据分析方面非常高效。xlwings就像胶水一样,将两者连接到一起,让我们能够同时拥有两者最好的一面。
fanjy
2021/11/10
10.2K0
Python让Excel飞起来:使用Python xlwings实现Excel自动化
从VBA到Python,Excel工作效率如何提高?
最后,我们需要启用对 VBA 项目对象模型的信任访问。你可以通过导航到文件选项信任中心设置宏来做到这一点:
量化投资与机器学习微信公众号
2020/02/20
11.5K1
从VBA到Python,Excel工作效率如何提高?
Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!
官方文档:https://xlrd.readthedocs.io/en/latest/
Python小二
2020/09/08
7.8K0
Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!
xlwings,让excel飞起来!
excel已经成为必不可少的数据处理软件,几乎天天在用。python有很多支持操作excel的第三方库,xlwings是其中一个。
派大星的数据屋
2022/04/02
2.5K0
xlwings,让excel飞起来!
利用 Python+Excel 制作天气预报表!
主要使用xlwings和requests这两个Python库,以及Office的Excel。
张俊红
2021/06/25
2K0
利用 Python+Excel 制作天气预报表!
Python和RPA什么关系?
Python是实现RPA的工具之一,且RPA要复杂的多,远不是会Python这么简单。
派大星的数据屋
2024/03/18
4570
Python和RPA什么关系?
不吹不黑!Python办公自动化,全网最全整理!
官方文档:https://xlrd.readthedocs.io/en/latest/
释然IT杂谈
2023/08/18
1.5K0
不吹不黑!Python办公自动化,全网最全整理!
Python 库 xlwings 操作 Excel 文档
每个扩展库的功能都有其侧重点,根据所需要的功能,选择所需的扩展库即可。这里主要介绍通过 xlwings 对 Excel 文件进行操作。
keinYe
2020/03/18
3.5K1
Python自动化办公-让 Excel 飞起来
Python 操作 Excel 可能是自动化办公最火热的需求了,看一看公众号文章底部的视频广告就知道了,里面尽是一些 5 分钟搞定 excel,将数据生成漂亮的图表。
somenzz
2021/08/19
2.1K0
打破Excel与Python的隔阂,xlwings最佳实践
前言能生成 pandas 代码的数据浏览工具工具安装加载数据直觉理解运行机制进一步完善充分利用 Excel 功能最后
咋咋
2021/09/01
5.6K0
打破Excel与Python的隔阂,xlwings最佳实践
"Python替代Excel Vba"系列(终):vba中调用Python
有小伙伴向我反映到,本系列前面的章节主要还是在讲 pandas ,几乎与 xlwings 没有啥关系。
咋咋
2021/09/01
5.6K0
"Python替代Excel Vba"系列(终):vba中调用Python
太强了,用Python+Excel制作天气预报表!
主要使用xlwings和requests这两个Python库,以及Office的Excel。
小F
2021/06/25
1.2K0
太强了,用Python+Excel制作天气预报表!
xlwings自动化帮「房东」生成房租单!
房东将整栋楼各房间的应缴房租详情用一个excel表记录了下来,现在需要给每个房间都以图片或excel表形式发送一个房租单。
龙哥
2022/04/12
1.4K0
xlwings自动化帮「房东」生成房租单!
Python与Excel交互——Xlwings
2 功能齐全,支持Excel的新建、打开、修改、保存(pandas和xlsxwriter去不能全做到)
十四君
2020/02/14
2.1K0
Python与Excel交互——Xlwings
Make Excel Fly,python库xlwings的使用。
xlwings的意思是给Excel插上翅膀,官网解释为Make Excel Fly。
JQ实验室
2022/06/09
1.3K0
xlwings库基本使用
首先,xlwing免费开源,功能强大;pro版本商业收费,个人免费。 但是也有缺点,xlwing必须配合Excel来使用。 如果想在linux上使用,我还是推荐使用pandas或者openpyxl xlwing配合jupyter可以交互式操作excel文档。xlwing可以像VBA宏一样操作Excel文档。可以很好的适配pandas和matplotlib
Crayon鑫
2023/10/10
7430
用 Python 进行办公自动化都需要学习什么知识呢?
Python 自动化办公,无外乎就是 excel,ppt,word,再加上数据分析、爬虫等技能
周萝卜
2023/08/21
2770
用 Python 进行办公自动化都需要学习什么知识呢?
你们都用Python实现了哪些办公自动化?
Python办公自动化主要是批量化、自动化、定制化解决数据问题,目前主要分为三大块:自动化office、自动化机器人、自动化数据服务。
程序员小新
2021/12/18
9770
推荐阅读
相关推荐
在Excel中调用Python脚本,实现数据自动化处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验