很久之前我写过一篇博客《python将某目录下所有excel文件合并》,最近有老外给我发邮件,想让我在该页面上能不能再链接介绍下pyxll插件—-一个python语言写成的excel 插件(商业产品)。我下载试用版测试了下(30天试用),发现确实是个不错的产品,唯一不好的是一个收费产品。本篇就简单的记录下pyxll 插件的安装和功能。

一、pyxll的安装

下载地址: https://www.pyxll.com/download.html ,安装方式有两种,官方推荐的是使用 Canopy python开发套件进行安装(安装相对简单,界面上点选式安装,而且pyxll的开发和canopy的开发貌似是同一个公司),不过我使用的是Anaconda python开发环境, 这里选择的是其他python平台,根据相应的python版本和excel 版本选择下载pyxll包 。

1、下载安装

pyxll-download
pyxll-download

解包pyxll压缩包后,里面有.whl 文件,可以通过pip 命令进行安装,见下图:

pyxll-whl
pyxll-whl

2、pyxll.cfg配置

安装完成后,需要配置pyxll.cfg文件。这里以常用的配置文件为例:

1[PYTHON]
2pythonpath = C:/pyxll-3.5.4-x64-py27
3executable = C:/ProgramData/Anaconda2/pythonw.exe
4pythonhome = C:/ProgramData/Anaconda2/
5dll =  C:/ProgramData/Anaconda2/python27.dll
6[PYXLL]
7modules = test

pythonpath为要使用的自定义python模式文件的路径,该参数实际上也可以写到PYXLL配置项下。后面还有日志和license配置项,可以按需求进行选择。

3、excel 加载pyxll.xll文件

打开一个excel 文件,可以通过 文件 — 选项 — 加载项 — 转到 —- 浏览 — 选择pyxll解压包里的pyxll.xll文件,此时就启用了pyxll 文件 ,首次启动界面如下:

pyxll-xll-file
pyxll-xll-file

这里选择start trial进行试用。点选加载项,会发现多了一个pyxll选项,在该处可以reload python插件。

二、pyxll的使用

这里以官方的演示的hello函数为例,该函数内容如下:

1from pyxll import xl_func
2@xl_func("string name: string")
3def hello(name):
4    """return a familiar greeting"""
5    return "Hello, %s" % name

将该python文件保存到pythonpath目录。

pyxll-hello
pyxll-hello

用该函数,如下:

pyxll-excel
pyxll-excel

这只一个简单的小示例,官方的example 示例中,比如可以实现动态时间显示(RTD),加减乘除、宏操作等,当然了这里是调用的python,基本上python上可以实现的文本处理功能在这里都可以自己以代码形式在excel里实现,就像使用VBA一样。

当然,我们实现的函数功能,也可以像excel里自带的函数一样,直接在fx后面通过 “=函数名” 进行调用。

三、ribbon使用

Ribbon可以简单的理解为自定义功能区功能,如下图:

ribbon
ribbon

上面框选的Pyxll Example Tab在excel里是不存在的,这个新增的功能区就可以认为是ribbon功能。不过上面的截图我们也看到出现了报错。报错原因我认为是两个地方有问题:其一,python中缺少ribbon模块;其二,需要将自定义的ribbon配置内容加到pythonpath路径里。

ribbon-install
ribbon-install

另外把把ribbon的配置路径也加入到pythonpath中,如C:/pyxll-3.5.4-x64-py27/examples 。成功配置后,界面如下:

ribbon-test
ribbon-test

当然这里的界面是可以通过修改ribbon.xml 文件进行自定义修改的。

四、其他

本篇侧重于pyxll的安装和demo功能的实现,按其官方介绍,其还有Worksheet函数、Menu菜单实现(EXCEL顶部栏)、宏开发等功能。由于暂时也没相关需后,后面有相关需求时,再写相关使用文章吧。

另外说说pyxll和xlsxwriter、xlrd等工具的区别,除了商业软件和开源软件的区别外,还有一个重要的区别,xlsxwriter、xlrd等模块是不依赖excel 环境的,其可以在命令行下通过命令调用读写excel 文件,进行行列操作;而pyxll是离不开excel的,其更像是excel 的第三方插件增强,可以以python为基础实现excel 已存在的和不存在的一些功能。提到的这三个工具并不冲突,也谈不上谁更好,只能说是互相补充吧。