Excel里琐碎重复的操作太多了——去空格、去重、空白填零、文本转数字、按分隔符拆分、加边框、统一命名格式、生成二维码……每一项单独看都"很简单",但普通办公用户不会写 VBA,每次要么现学、要么搜索、要么求助同事,一件小事折腾半小时。我身边同事的电脑里存着一堆来路不明的宏文件,改都不敢改。市面上的Excel工具箱要么是全家桶巨无霸(装完Excel卡半天),要么是付费套件(买了一堆用不上的功能)。

我最初的想法是做一个小工具集合,但很快卡在两个矛盾上:第一,功能越做越多,客户端必须频繁升级更新,用户懒得升级;第二,工具做多了把Excel工具栏占得满满的,找个功能找半天找不到,节省的时间都花在查找工具上了。受"云"思路启发,我找到了突破口:把客户端做成一个启动器,所有工具打包放在服务器上,临时下载、解压执行、用完即毁,解决用户频繁升级的问题;客户端提供工具名称自定义名称、分组以及实时搜索的功能,解决工具查找的问题。

于是有了"Excel机车"的形态:Excel里提供一个统一入口,打开就是在线工具列表,按数据处理、格式设置、工作表管理、编码生成、比对校验等分类组织上百个小工具,绝大部分工具免费提供给用户使用,个别高级工具收取订阅费用解决生活问题。客户端兼容 Excel 2000 到 365,因为目标用户里有相当比例还在用老版本,这也是选择 C# COM 加载项而非纯 Office.js 的直接原因。最重要的是,这样设计解决了小工具分发的问题,我在使用过程中遇到的问题可以快速写成小工具发到服务器上,一下子所有用户都可以使用这个新工具,新增的小工具服务端直接推送到客户端,用户无需升级客户端。为了让这个产品能真正对用户有用,我还设计了在线提交需求的功能,用户需要什么功能,可以直接提交给我,等我添加完成还可以提醒用户使用。

客户端用 C#/.NET Framework 4.0 实现 COM 加载项,2003 版本及以下走 CommandBar、2007+ 以上版本走 Ribbon XML 双方案;复杂工具配 C# 编译的对话框 DLL 由 VBA 调用。客户端的"新工具需求提交"与回复通知,形成我与用户直接互动的运营闭环。

后续我会把一些可能有使用门槛的小工具的使用方法整理成文档发布,希望这个产品对用户有用。