以下内容为自己的学习笔记,如需求转载,请声明原文链接 微信公众号「ENG八戒」mp.weixin.qq.com/s/k2XtfXS3G…

Excel: Python 怎样干掉 VBA 系列 乙

创立作业表格

创立表格

xlwings 就能够帮忙创立刺进了宏的 excel 表格。

先找到一个心满意足的目录,一般我们称之为作业目录,比如我选择在 D 盘根目录,翻开文件管理器,点击途径栏空白部分,然后输入 cmd 并回车

Excel: Python 怎样干掉 VBA 系列 乙

输入回车后,系统会主动弹出命令行终端,并且主动把命令行终端的当时途径设置到上面的作业目录中

Excel: Python 怎样干掉 VBA 系列 乙

在里面输入

xlwings quickstart fishfeed

上面的指令会在当时目录下创立文件夹 fishfeed,并在文件夹内创立两个文件

fishfeed.py
fishfeed.xlsm

文件 fishfeed.xlsm 是 xlwings 主动刺进了宏的表格,我们后边就在这个表格里刺进和调用自定义 python 函数。

文件 fishfeed.py 是 python 脚本文件,里面已经创立了 xlwings 的应用示例,包含有一个简单的 hello 示例函数,文件内容如下

import xlwings as xw
def main():
    wb = xw.Book.caller()
    sheet = wb.sheets[0]
    if sheet["A1"].value == "Hello xlwings!":
        sheet["A1"].value = "Bye xlwings!"
    else:
        sheet["A1"].value = "Hello xlwings!"
@xw.func
def hello(name):
    return f"Hello {name}!"
if __name__ == "__main__":
    xw.Book("fishfeed.xlsm").set_mock_caller()
    main()

Excel 作业簿和 python 脚本的交互

从文件 fishfeed.py 的代码内容来看

xw.Book("fishfeed.xlsm").set_mock_caller()

这行代码会将表格文件 fishfeed.xlsm 和本脚本代码树立相关。当履行

xw.Book.caller()

时,回来的就是 fishfeed.xlsm 表格代表的作业簿,存放在变量 wb。

wb.sheets[0]

通过 xlwings 作业簿的 sheets 成员获取作业表,后边的 [] 内的数值代表作业表序号,序号从 0 开始(0,1,2,3…)。

获取到作业表后,通过作业表的操作符 [] 能够指定访问和读写的单元格内容

sheet["A1"].value = "Bye xlwings!"

上面这行代码表明将字符串 Bye xlwings! 内容写入作业表 sheet 的 A1 单元。

接下来看看运转作用,双击翻开 excel 文件 fishfeed.xlsm,点击工具栏的 xlwings,然后直接点击最左边的履行按钮 Run main

Excel: Python 怎样干掉 VBA 系列 乙

在上面的作用里,当履行 Run main 时,xlwings 主动直接履行了一遍 python 脚本文件,但 python 脚本文件中还有其它的自定义函数未被运用,下面来看看怎样刺进 python 脚本文件提供的自定义函数。

excel 调用自定义 python 函数

脚本文件 fishfeed.py 里还完成了一个函数 hello()

@xw.func
def hello(name):
    return f"Hello {name}!"

hello() 函数的用处是将输入的参数简单拼接在字符串 hello 之后,然后回来拼接后的结果。

在 excel 单元格里刺进 python 自定义函数与其它 excel 自带函数是相同的书写格局,但刺进的时候有一点需求留意,先看看作用

Excel: Python 怎样干掉 VBA 系列 乙

留意:在任何单元格里刺进自定义函数之前都必须先选中该单元格,然后点击工具栏里的按钮 Import Functions。假如你发现刺进的自定义 python 函数没有发生作用,能够尝试点击一下工具栏里的按钮 Import Functions

至于其它的自定义功用的函数完成完全能够照着 hello() 函数格局来完成。

未完待续,下期更精彩。。。