场景
在办公类应用中,常常遇到以下场景:
将数据库数据取出,批量填充到预先画好的word模板,输出用于打印的word文档。
限制
ie浏览器,本机安装了word。
问:那么多可以选择的,jacob, iText, 国内大量的在线编辑控件,为什么非得用前端VBA呢?
归根溯源,由于word的私有格式,对于其文档的程序操作只能通过其所谓automation来进行,
本质上就是利用word的Activex组件封装所开放的接口。编程语言可以是VB,C#,或者在ie浏览器调用VBA。
java环境下的 jacob是通过jni实现对com的调用,其执行效率之低是可以想见的,更为头疼的是,在这种无法掌控的脆弱调用中,
难以解决资源泄漏和并发调用冲突。何况,在服务端调用com,也就将服务绑定在win系统下了。
在浏览器端调用VBA资源泄漏和并发调用冲突都浮云了。
iText只能单向用语句输出word或rtf,似乎不能打开word文档操作,这样的话,模板填充的想法也就泡汤了。
国内很多公司通过com组件封装了许多office web在线编辑类的组件,但本例中,不涉及在线编辑,用word自带组件就够了。
VBA编程能做到何种程度?
如果你在word中试用过“录制宏”,就会了解VBA的强大了,它可以用脚本模