||
在Excel有一些配方是如下格式的,为了简单方便的传递到其它字段中,我决定将配方转化为一种格式化的字符串,形式是"配方名称 百分数%成分名称,百分数%成分名称..." 这样的格式,这样即便不在Excel中也可以完整而精确的传递多成分的配方。比如如下的示例:
这个函数如果用VBA来写,自然也是比较简单的,但我的环境是Python +xlwings模块,Excel表格里面使用,Excel调用这个函数,代码体在Python当中(如果函数是Python调用,则没有这种问题)具体实现时碰到一个细节问题:
用rngs参数代表含有百分数的区域,它传入到Python代码中时,默认是用List对象而不是Excel的Range对象,这样在函数里面就不能使用rngs的行/列等信息,报错说rngs没有row属性之类。
开始我尝试将参数指定为rngs: xw.Range,结果不行,虽然可以在编写代码时提供一些信息补全,但传递的参数类型还是List。
在百度上搜索不到这方面的实例,怎么办呢?
最后想到 官方网站上可能有说明,果然在它们的教程中说了这个问题,需要指定arg参数的类型:
@xw.arg('rngs', xw.Range)
这样处理之后,函数运行就通过了。
不得不说,Python的代码真的很优雅,没有多余的end或 end if, 去除末尾的逗号,在VBA里面可能多写好几句,Python里面一个字符切片就解决了问题。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 17:38
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社