Excel: Python 如何干掉 VBA 系列 乙
以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/k2XtfXS3GUt4r2QhizMOVg
创建工作表格
创建表格
xlwings 就可以协助创建插入了宏的 excel 表格。
先找到一个心满意足的目录,一般我们称之为工作目录,比如我选择在 D 盘根目录,打开文件管理器,点击路径栏空白部分,然后输入 cmd 并回车
输入回车后,系统会自动弹出命令行终端,并且自动把命令行终端的当前路径设置到上面的工作目录中
在里边输入
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
在上面的效果里,当执行 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 自带函数是一样的书写格式,但插入的时候有一点需要注意,先看看效果
注意:在任何单元格里插入自定义函数之前都必须先选中该单元格,然后点击工具栏里的按钮
Import Functions
。如果你发现插入的自定义 python 函数没有发生作用,可以尝试点击一下工具栏里的按钮Import Functions
。
至于其它的自定义功能的函数实现完全可以照着 hello() 函数格式来实现。
未完待续,下期更精彩。。。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!