这次我们会介绍如何使用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实现快速安装:

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代码相关推荐

  1. Python Excel中使用python代码

    Python Excel中使用python代码 如果哪一天excel可以用python去写代码该是多好的一件事情啊~ 本人想在excel中运行py代码 按以下步骤行动 pip install xlwi ...

  2. 怎么python编程excel_Excel 如何在excel中运行Python代码?-ExcelVBA程序开发-ExcelHome技术论坛 -...

    本帖最后由 yxp 于 2018-8-19 18:48 编辑 听说有个商业插件可以,但是要交钱,各位大神有没有什么好办法. vba好是好,就是太啰嗦了,例如:搜一个文件还要遍历.递归,理解起来巨麻烦, ...

  3. excel实战应用案例100讲(十五)-在Excel中对Python进行操作完美工具PyXLL-Jupyter

    Excel和Jupyter Notebok都是我每天必用的工具,而且两个工具经常协同工作,一直以来工作效率也还算不错.但说实在,毕竟是两个工具,使用的时候肯定会有一些切换的成本. 最近,在逛GitHu ...

  4. python能在excel运行吗-用ExcelPython在Excel中调用Python

    Python部落组织翻译, 禁止转载 [介绍] ExclePython是一款轻量级的COM库,它支持你从Excel VBA中调用Python代码和运行Python 其他功能(确实任何语言都支持COM) ...

  5. excel调用python编程-如何在excel中调用python脚本

    如何在excel中调用python脚本 发布时间:2020-07-03 14:15:28 来源:亿速云 阅读:155 如何在excel中调用python脚本?针对这个问题,这篇文章详细介绍了相对应的分 ...

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

    这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5 ...

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

    大家好, 这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球 ...

  8. 使用xlwings插件在Excel中调用Python

    xlwings官方文档: 英文版:https://docs.xlwings.org/en/stable/# 中文版:https://www.kancloud.cn/gnefnuy/xlwings-do ...

  9. iframe视频代码_在Excel中创建IFRAME代码

    iframe视频代码 If you want to embed a YouTube video on your website, YouTube will create some IFRAME cod ...

最新文章

  1. c++ 三次多项式拟合_非线性回归模型(一)--多项式回归
  2. 【转载】拿来即用的企业级安全运维体系搭建指南
  3. spring mvc拦截器和mvc:annotation-driven /的详解
  4. 设计模式——UML图
  5. cocos2d-x游戏实例(11)-触屏主角移动轨迹
  6. 使用VoiceFliter-Lite改进设备上的语音识别
  7. wex5 php开发,WeX5平台PHP开发 使用说明文档
  8. SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
  9. python入门心得_一天入门 Python 的一些心得
  10. 代码简洁(注意事项)
  11. oracle中的to_number,Oracle中to_number()函数的用法
  12. R语言学习2-RMarkdown入门使用
  13. VC下ctreectrl的使用方法及节点前图标添加方法
  14. httpclient 在获取返回值时,使用getResponseBody触发警告的问题
  15. java处理文本的方法
  16. PyMining-开源中文文本数据挖掘平台 Ver 0.1发布
  17. Grails 技巧 - View 篇
  18. 邮箱格式怎么填写才正确?Tom邮箱格式怎么写?邮箱的正确填写?
  19. 网站数据采集器-文章采集工具-关键词文章采集工具
  20. Live800:如何拯救客服的烦恼,让服务和营销更简单?

热门文章

  1. 认识三大数据库:知网、维普、万方
  2. [精华]史上最强买笔记本电脑专业精粹导购指南,让奸商彻底晕菜!
  3. Navicat for MySQL给用户赋予角色
  4. 浅析肖特基二极管损坏的具体原因
  5. vmware linux访问windowsxp下的文件
  6. 51 单片机 点阵 LED 显示屏程序
  7. 反电动势的危害和简易保护措施
  8. Mybatis学习总结(结合个人理解)
  9. mysql导入数据表
  10. 十款英文像素字体下载