通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

什么编程语言可以与 Excel 结合

python编程语言可以与 Excel 结合。Python相比VBA运行速度更快,且代码编写更简洁灵活;Python中有众多优异的第三方库,随用随取,可以节省大量代码时间;对于Python爱好者来说,pandas、numpy等数据科学库能用于Excel数据分析中,那将是如虎添翼。

一、python编程语言与 Excel 结合

python编程语言可以与 Excel 结合。Python相比VBA运行速度更快,且代码编写更简洁灵活;Python中有众多优异的第三方库,随用随取,可以节省大量代码时间;对于Python爱好者来说,pandas、numpy等数据科学库能用于Excel数据分析中,那将是如虎添翼。

Python中有很多库可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。

但相比其他库,xlwings性能综合来看几乎是优异秀的,而且xlwings可以实现通过Excel宏调用Python代码。

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

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脚本的全过程,你可以试试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动化报告等等。

延伸阅读:

二、Excelize

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿

Excelize是国人编写的基于Go语言的Excel库,中文文档相对来说更为齐全,同时Go语言是编译型语言,编译后只有1个运行文件,可以方便的拷贝到其他电脑使用,同时不用安装额外的运行时,Go语言还有一个优势就是,速度非常快。

相关文章