插上Python送来的翅膀,会飞的EXCEL你见过吗?

Python和EXCEL的爱情故事,要从wlxings说起。

就像阴霾中透出阳光,wlxings让EXCEL的友好界面与python的灵活强大结合在一起,给你飞行般的体验!

今天,我们让EXCEL真正飞起来。

安装 python

  1. 下载Python,下载入口为 https://www.python.org/downloads/,用户自行选择对应操作系统的版本就可以,比如,我用的是Windows x86-64 executable installer
  2. 下载后,正常安装,保持默认项,下一步,再下一步,一直点到无处可点,你就完成了。

安装python依赖包

  1. xlwings是为Excel订制的插件,如果Python是匹奔腾桀骜的骏马,那么xlwings就是一块绝世马鞍,它可以让Excel驾驭住Python。
  2. Numpy是python中的一个科学运算库,为python提供矩阵功能,是python中科学计算的心脏
  3. Pandas是python的高级数据表模块,如果你觉得Excel的query,power pivot好用,在pandas面前,班门弄斧而已
  4. matplotlib,seaborn 是python的作图库,还有什么图是几行代码搞不定吗?

以上这些模块,为python提供了强大的动力,如果你对这些没概念,没关系,我初次接触时也是并不知道啥是啥,渐渐地,不知何时,却和他们成了老朋友

以上模块,均可通过pip安装,方法为:

  1. WIN + R, 输入 CMD,回车
  2. 输入 pip install xlwings numpy matplotlib pandas seaborn, 这一步出错请检查网络
  3. 输入 xlwings addin install, 这一步出错请参考下面:
  1. 下载文件: xlwings.xlam
  2. 安装该文件: 开发工具 Developer > Excel加载项 Excel Add-in > 浏览 Browse > 选择下载的xlwings.xlam
    如果你的EXCEL菜单栏没有 开发工具 Developer, 开启方式为 文件 File > 选项 Options > 自定义功能区 Customize Ribbon,Mac为: Cmd + , > Ribbon & Toolbar

完成这一步,我们的环境几乎OK,所有工具到齐,可以开始准备工作!如果以上步骤你看不懂,也没关系,照猫画虎,从模仿到超越,是走向成功必经之路。

创建文件并设置

  1. 创建EXCEL文件,并另存为xlsm格式(启用宏的xlsx),编写python脚本, 脚本需要与EXCEL文件同名

  2. 设置VBA项目的信任(仅需一次)
    文件 File > 选项 Options > 信任中心 Trust Center > 信任中心设置 Trust Center Settings > 宏设置 Macro Settings > 信任对VBA工程对象模型的访问

  3. 在VBA中为Xlwings 添加引用
    这一步很关键,它可以让你写的python函数,像=SUM()=AVERAGE()等原生EXCEL函数一样,在EXCEL中使用,自己编写,随处调用
    Windows: VBA editor > 工具 Tools > 引用 References..., Mac: VBA editor的左下角)

4.导入编写好的python模块

尽情调用

本文进行了简单的尝试,实现了以下功能:

  1. lmplot (seaborn)
  2. boxplot (seaborn)
  3. heatmap(seaborn)
  4. 保存图片( 6 * 6 inch, 300dpi) (开发工具 > 宏 > saveLastPlot)

所有的功能均在python脚本中定义好了,可在文末获取代码

lmplot

lmplot可以绘制散点图,并对散点进行linear regression, 这里的plotlm接受三个参数,第一个为整个数据表,第二个参数为X轴的数据,我们只需要把用于X轴的那一列数据的列名放进去就可以了,同理,第三列为Y轴数据的列名。

boxplot

boxplot可以查看不同类别的数据的分布, 这里的plotbox和plotlm一样,接受三个参数,分别为整个数据表,X轴数据的列名,Y轴数据的列名。X轴一般为某个分类,比如性别,班级,Y轴一般为某个连续变量,如成绩。这样我们方便地查看不同性别或者班级的成绩是否有差异。

Heatmap

Heatmap可以方便地查看矩阵数据, 比如我们常常需要画基因表达数据,蛋白表达数据,不同条件下的某些指标的变化等

保存图片

我写了一个 saveLastPlot函数,可以方便的储存最后一次画的图,默认参数为6 * 6 inch, 300dpi

后记

学习python以来,我一直惊讶于python语言的优雅,代码效率之高超,也一直惋惜Excel没有python的灵活和方便,这可能就是图形化界面的弱势吧。

当我看到xlwings这个插件时,有一种阴霾中透出阳光的顿悟感,这才是EXCEL的最强形态啊,EXCEL的友好界面与python的灵活强大结合在一起,坐火箭也不过如此吧!哈哈哈。利用这个工具,我们可以让EXCEL真正飞起来。

身边一直有帅哥美女问我,如何学python,python难不难之类的问题,我认为这个插件可以是一个很好的契机,可以让你在学习之初就体验到python的强大,更有坚持下去的动力和可能。

从模仿到超越,是走向成功的必经之路。

先照猫画虎学起来,在使用中发现问题,解决问题,慢慢地,你会和python成为好朋友的。

关注 肖恩札记 微信公众号,获取示例材料。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353