利益相关,不是开发者,极度厌恶vba而不得不用它写了一整个项目的苦主
vba最大的优势不是他那执行效率低下的语言,也不是可有可无的和office联动可以轻易被pandas代替掉的所谓”生态“(封闭的东西谈什么生态),更不是录宏,简单这些。 由于缺少特性,vba里实现任何一个简单的功能都非常困难。
vba最大的优势是当可以帮助你快速在没有条件大面积布置关联和环境的情况下实现一个应用。因为excel他就是个极其普遍,范围极广,基本行只要大版本一致了就不需要再去部署的超级稳定环境。最多最多复制一个MS.OLB文件就可以完成环境布置这件事。在环境稳定的同时,excel还赋予了非常好的用户交互能力,可以说作为语言vba是烂的,但是作为interface,office几乎是最好的。
我也试过很多比如xlwing,之类的关联excel的lib,但是自己用还好,一旦开始布置环境马上就变成灾难。 用其他语言上云也是一个办法,但是过程一般很长而且需要非常非常非常非常多it人员的帮助。在时间有限的条件下,依附于office的vba是没有办法的办法
自己部署环境很容易,但是要保证几千号人跟你是一个环境,在没有it人员的帮助下是非常困难的。即使生成exe,保证大家都能运行难度都是非常高的
有很多语言都可以处理excel,在python流行以前就是了。所以他们取代VBA了吗?没有!
而为什么需要用VBA和python等作为补充呢?有些应用场景,其实是更适合用数据库的。
比如上次,有个朋友说,自己是做土木的,涉及到一个产品,有多个供应商的报价,一个项目又有多种物料。他希望能很快为别人展示项目中用到的物料使用几个不同供应商的报价情况。我当时一想,这不就是一个最基本的多对多关系嘛?然后就安利他看一下关系型数据库入门。
所以问题就是,你为什么要用python处理excel?