0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何把Python和Excel两大数据工具进行集成

数据分析与开发 来源:Python大数据分析 作者:朱卫军 2021-10-12 09:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

这次我们会介绍如何使用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;
2.  Python相比VBA运行速度更快,且代码编写更简洁灵活;
3.  Python中有众多优秀的第三方库,随用随取,可以节省大量代码时间;

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

二、为什么使用xlwings?

Python中有很多库可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。但相比其他库,xlwings性能综合来看几乎是最优秀的,而且xlwings可以实现通过Excel宏调用Python代码。

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

pipinstallxlwings

安装好xlwings后,接下来需要安装xlwings的 Excel集成插件,安装之前需要关闭所有 Excel 应用,不然会报错。同样在命令行输入以下命令:

xlwingsaddininstall

出现下面提示代表集成插件安装成功。4fbd771a-26b6-11ec-82a8-dac502259ad0.png
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的交互。怎么创建这两个文件呢?非常简单,直接在命令行输入以下代码即可:

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、调用.py脚本里的main()函数我们先来看一个简单的例子,自动在excel表里输入['a','b','c','d','e']第一步:我们把.py文件里的代码改成以下形式。

importxlwingsasxw
importpandasaspd


defmain():
wb=xw.Book.caller()
values=['a','b','c','d','e']
wb.sheets[0].range('A1').value=values


@xw.func
defhello(name):
returnf"Hello{name}!"


if__name__=="__main__":
xw.Book("PythonExcelTest.xlsm").set_mock_caller()
main()

然后在.xlsm文件sheet1中创建一个按钮,并设置默认的宏,变成一个触发按钮。设置好触发按钮后,我们直接点击它,就会发现第一行出现了['a','b','c','d','e']

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

importxlwingsasxw
importpandasaspd

defmain():
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
defhello(name):
returnf"Hello{name}!"


if__name__=="__main__":
xw.Book("PythonExcelTest.xlsm").set_mock_caller()
main()

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

责任编辑:haq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Excel
    +关注

    关注

    4

    文章

    230

    浏览量

    57552
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89585

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

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    labview如何实现数据的采集与实时预测

    现有以下问题:labview可以实现数据的采集以及调用python代码,但如何将这项功能集成在一个VI文件里,从而实现数据的采集与实时预测
    发表于 12-03 21:13

    如何使用协议分析仪进行数据分析与可视化

    分析与可视化需结合工具功能与业务场景: 快速诊断:依赖内置统计和IO Graph。 深度分析:导出数据Python/R进行统计建模。 长期监控:
    发表于 07-16 14:16

    西门子EDA产品组合新增两大解决方案

    西门子数字化工业软件日前宣布为其电子设计自动化 (EDA) 产品组合新增两大解决方案,助力半导体设计团队攻克 2.5D/3D 集成电路 (IC) 设计与制造的复杂挑战。
    的头像 发表于 07-14 16:43 2945次阅读

    DevEco Studio AI辅助开发工具两大升级功能 鸿蒙应用开发效率再提升

    ) 近似最近邻:提高大规模数据集下的检索效率。 (3) 检索模型:用于高效检索相关文档。 2、 可控生成过程:将检索结果作为生成模型的输入,引导模型仅基于已验证内容进行回答,大幅降低“虚构答案”的概率
    发表于 04-18 14:43

    python入门圣经-高清电子书(建议下载)

    和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容; 第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python 2D 游戏开发如何利用
    发表于 04-10 16:53

    大数据与云计算是干嘛的?

    大数据与云计算是支撑现代数字化技术的两大核心。大数据专注于海量数据的采集、存储、分析与价值挖掘;云计算通过虚拟化资源池提供弹性计算、存储及服务能力。
    的头像 发表于 02-20 14:48 1272次阅读

    Spire.Cloud.Excel云端Excel文档处理SDK

    Spire.Cloud.Excel 是一款专业的云端 Excel 文档处理 SDK,开发人员可调用 SDK 在云端创建、读取、编辑、转换、及保存 Excel 文档。作为一款完全独立的 Office
    的头像 发表于 02-13 11:03 785次阅读
    Spire.Cloud.<b class='flag-5'>Excel</b>云端<b class='flag-5'>Excel</b>文档处理SDK

    OSS Nokalva:适用于Python的OSS NAS工具

    执行以下任务:编写软件来创建、处理、调试和测试 NAS 消息。在处理 3GPP 版本中的更改时,此任务特别耗时且容易出错。现在客户可以专注于他们的核心业务。 用于 Python 的 OSS NAS 工具
    的头像 发表于 02-09 09:16 778次阅读
    OSS Nokalva:适用于<b class='flag-5'>Python</b>的OSS NAS<b class='flag-5'>工具</b>

    使用插件将Excel连接到MySQL/MariaDB

    处理 MySQL 数据进行数据清理和重复数据删除。 直接从 Excel 连接到 MySQL 要将 Excel 连接到 MySQL,您只需指
    的头像 发表于 01-20 12:38 1130次阅读
    使用插件将<b class='flag-5'>Excel</b>连接到MySQL/MariaDB

    七款经久不衰的数据可视化工具

    ,Power BI 是一款性价比高的商业智能工具,尤其适合企业用户。它能够与微软的其他产品,如Excel、SharePoint等无缝集成,方便数据分析和报告生成。它的缺点是,功能强大的
    发表于 01-19 15:24

    适用于Oracle的Devart Excel插件:轻松管理数据

    工作簿中的数据,编辑这些数据并将其保存回 Oracle。它使您能够像使用 Excel 工作表一样处理 Oracle 数据,可以轻松进行数据
    的头像 发表于 01-14 11:11 943次阅读
    适用于Oracle的Devart <b class='flag-5'>Excel</b>插件:轻松管理<b class='flag-5'>数据</b>

    如何两个数据返回给调用函数

    函数的处理结果包含两个数据,如何两个数据返回给调用函数? 第一种,两个数据封装成一个结构体,函数返回结构体。 调用函数的地方同样用结构体
    的头像 发表于 01-08 10:15 678次阅读

    Devart Excel的附加组件

    Excel 的全部功能用于超过 25 种云应用程序和数据库。 - 将 Microsoft Excel 连接到任何所需数据源 - 同时处理多个数据
    的头像 发表于 01-07 11:40 768次阅读

    ODX诊断数据库转换工具 - DDC

    INTEWORK-DDC (Diagnostic Database Convertor) 是将诊断调查问卷转换为标准ODX(2.2.0)数据库的工具。DDC工具可以将易于沟通交流的Excel
    的头像 发表于 12-31 11:22 820次阅读
    ODX诊断<b class='flag-5'>数据</b>库转换<b class='flag-5'>工具</b> - DDC

    缓存对大数据处理的影响分析

    ,可以将频繁访问的数据存储于高速缓存中,从而大大提高数据的访问速度。这是因为缓存通常位于内存或更快的存储设备中,其访问速度远快于传统的磁盘存储。 二、减轻后端负载 大数据应用通常需要进行
    的头像 发表于 12-18 09:45 1108次阅读