🎯 前记 Intro
关注这边比较久的小伙伴,一定知道铺主我的本职工作经常要对着多份电子表格,多开Excel窗口是再正常不过的日常操作。这些年,我的Excel插件由Office Tab、切换到WindowTabs,然后有坑。
先聊聊Office Tab——功能确实全,但稳定性让人崩溃。表格多开几个,好几次正改着表,它突然退出,所有打开的文件窗口瞬间全部关闭。自动保存不到那一刻,连恢复都不能的那种绝望,经历过的人都懂。
然后是WindowTabs——实现蛮好用,但就一个奇葩问题:窗框开多了放久了(不定期),窗框的标签就开始闪烁,然后走马灯式自己来回切换,完全不受控制。只能在设置中把分组去掉勾选再勾上,手动Refresh。虽说也不是不能用,但忙起来根本没时间这样弄。
看到这,应该有人会说某某插件实现了这功能,但你们忽略了它们大杂烩的功能其实大部分都用不上。有点强迫症的铺主,决定自己动手💪,丰衣足食。反正,迟些都要重构我女儿出生那年手搓的ExcelDNA插件,就当热身呗!
一、✨ MultiTab.ExcelDNA 是什么
这可能是全网首个开源免费的Excel多标签插件。
其它相同的开源插件可能有,可铺主我没找着。于是,为了参考源代码只能对https://www.52pojie.cn/thread-1907107-1-1.html这哥们的Excel文件多标签插件|VSTO文件进行逆向。然后使用Excel-DNA框架重构,并进行了多轮的打磨。 目前代码已完全开源,可审计,没有后门,没有广告,没有突然崩溃的风险。
为什么用Excel-DNA而不是VSTO?
我一直很讨厌VSTO的插件:
Excel-DNA就清爽多了:一个.xll文件,双击就能加载,拷贝到XLSTART目录就能自动启动。分发方便,部署简单,用户零门槛。
二、🎯 核心功能
插件加载后,Excel窗口顶部会出现一个标签栏,显示所有已打开的工作簿:
💻 基础操作
- 右键菜单——保存、关闭、复制路径、打开所在文件夹等
🧩 右键菜单功能一览
🎨 自定义主题
因为原作的Tab高度实在太低,颜色也不大突出,所以铺主进行较大的改动。虽然,修改后默认使用了EVA 1号机这种耐久度极高的配色 ,但是,萝卜青菜各有所爱,铺主又增加了外部配置接口让大家可以根据自己的喜好调整(调得好不好看就看大家审美了(欢迎评论区贴图晒一下)
因为config使用笔记本修改太膈应,一不小心逗号输成了中文逗号,就失效了。所以,铺主基于aardio又搓了一个开源的可视化配置编辑器,可以调整:
- 活动/非活动标签的背景色、边框色、文字色 不用手动改,点点鼠标就行。
(这里要吐槽一下国内AI Agent对aardio的支持,Kimi拿着Lua和Java的语法胡说八道,给它以往写的项目给它看,它还谢谢我教会它,把我气得那个;GLM5.1能改好一些些但不多,最后还得靠Deepseek V4改了两三轮把程序跑通,浪费了不少时间和Tokens)
三、🔧 技术亮点
作为开源项目,技术上我做了不少打磨:
1. 多窗口独立管理
以Excel窗口句柄为Key,为每个Excel顶层窗口独立创建标签栏。解决多窗口/多显示器环境下标签栏丢失或错位的问题。
2. COM线程安全
- 所有UI操作通过ExcelAsyncUtil.QueueAsMacro调度到Excel主线程
3. 零依赖配置解析
手写SimpleJsonParser,不引入Newtonsoft.Json等第三方库。配置支持热重载,修改后重启Excel即可生效。
4. GDI+高性能绘制
- 智能中间省略号:长文件名在中间截断,保留文件名尾部,方便辨识之余最大化利用空间
5. Win32窗口嵌入
通过SetParent/SetWindowLongPtr将WinForms控件嵌入Excel主窗口,精确定位到XLMAIN、XLDESK等内部窗口类名,定时器持续跟踪窗口大小变化。
6. 严格COM生命周期管理
所有遍历Workbooks/Windows的地方都用try-finally+Marshal.ReleaseComObject,防止Excel进程残留后台。
四、📥 安装使用
方式一:直接加载(测试用)
方式二:XLSTART自动加载(推荐)
将.xll文件复制到以下任一目录:
- %APPDATA%\Microsoft\Excel\XLSTART\(当前用户)
- %ProgramFiles%\Microsoft Office\root\Office16\XLSTART\(所有用户)
重启Excel即可自动加载。
方式三:通过开发工具加载
- 启用"开发工具"选项卡(文件→选项→自定义功能区→勾选开发工具)
卸载
临时禁用:开发工具→加载项→取消勾选或移除 完全卸载:关闭Excel,删除.xll文件和同目录的MultiTab.config
📝 WQ:后记
铺主已经将开源信息放在文章最后的位置,发行版分为x86和x64两个版本,针对的是你安装的Office版本,两个压缩文件包括含打包版packed.xll(将dna和dll一起打包)以及未打包的dna、dll和xll,其中AddIn64-packed.xll会有可能被安全软件误报,添加例外即可。
虽然MultiTab.ExcelDNA并不完美,开启新文件时还是因为插件会更新一次TabList迟一些,但胜在稳定,有兴趣小伙伴,可以复制链接访问按你的Office版本(32bit/64bit) 下载相应的压缩包后,解压使用。好了,这次就聊到这了,若然觉得这篇文章能帮到你,希望大家点赞和评论留言,这能帮到我不少,有什么软件需要也可以留言给我,我会尽快回复,感谢感谢!!!
🌟 开源信息:https://gitee.com/ginkdu/mutli-tab.-excel-dna/releases
本文介绍的MultiTab.ExcelDNA为开源项目,采用MIT协议,可自由使用、修改、分发。