Excel-DNA Skill 终极形态:一个插件,拿下 .NET 全生态 + Office 全组件

我十年 Office 开发的终极大招:一个 Skill,让 AI 帮你做出最专业的 Excel 插件


不是写 VBA 宏,不是画 Ribbon 菜单。是一口气搞定:自定义函数、现代化功能区、WebView2 网页面板、媲美前端界面的 WPF 任务窗格——全程一行代码不用写。这就是我刚做完的 Excel-DNA 插件开发 Skill。

一、为什么我一直在做 Office 和浏览器周边的工具?

回看过去这一年,我一共做了八套 Skill:

Skill

领域

能做什么

VBA-Excel

Excel 宏

AI 写 VBA,打包成 xlam 插件,带 Ribbon 带安装脚本

Python-dev

Python 桌面工具

AI 搭环境、写代码、打包成 exe 双击即用

dotnet-dev

.NET WPF 桌面

MVVM 架构 + HandyControl 界面,生成专业桌面软件

WPS-dbsheet

WPS 多维表格

AI 操控表格、脚本、自动化、权限,95% 操作全覆盖

feishu-dbsheet

飞书多维表格

AI 操作多维表格、自动化插件、OpenAPI 全链路

chrome-extension

浏览器插件

AI 写插件、自动测试、一键安装进浏览器

icon-design

图标素材

全球顶级开源图标库聚合,AI 搜、调、导出

ExcelDNA

Excel/WPS 插件

UDF 函数 + Ribbon + CTP 窗格 + WPF 全栈

你看出规律了吗?

全部围绕两个东西:Office 办公软件 和 浏览器。

这不是巧合。这是我作为一个在 Office 开发领域深耕了十年的老兵的判断——

面向零基础用户的 AI 开发,最有价值的方向不是做一个全新的 App,而是在他们天天用的工具上,长出他们刚好需要的新功能。

打开电脑,你最常用的软件是什么?Excel、WPS、浏览器。这三样东西,是你每天工作上"物理距离最近、打开频率最高、操作习惯最熟"的工具。

如果新功能直接嵌在这些你天天用的工具里,省掉的是"打开另一个软件 → 切换窗口 → 操作完 → 切回来"的全部摩擦。这就是我一直在说的"最短路径"——让功能长在离你最近的工具上。

但做到这一步,光靠 VBA 够吗?

不够。


二、从 VBA 到 Excel-DNA:一次本质性的技术升级

VBA 是我之前 Skill 体系里 Office 插件开发的唯一方案。它确实好用——原生嵌入、随文件分发、开发简单。

但做了这么多 VBA 项目,我太清楚它的天花板在哪:

VBA 的软肋

具体限制

自定义函数体验差

VBA 写的 UDF 没有参数说明、没有函数向导提示,用户不知道每个参数填什么。Excel-DNA 可以带完整的参数描述和 IntelliSense,像原生函数一样用

.NET 生态隔离

VBA 只能用 COM 包装调一点点 .NET,最新 .NET 6/8/11 的能力完全吃不到

界面丑陋

VBA 自带的 UserForm,说好听叫"经典",说难听叫"上世纪的审美"

无法集成现代前端

想在 Excel 里嵌一个 WebView2 网页面板?VBA 做不到

跨进程能力弱

想自动读取网页内容、操控浏览器、调 Windows API?VBA 写起来要命

性能瓶颈

大数据量的公式计算,VBA 和 .NET 的性能差几十倍

代码保护

VBA 代码本质上就是明文,只能设个密码,破解太容易

而 Excel-DNA,几乎完美解决了以上所有问题。


三、什么是 Excel-DNA?为什么我在众多方案里选了它?

Excel 二次开发有很多技术路线:VSTO、COM Add-in、JavaScript API、VBA、Excel-DNA。

我最后选了 Excel-DNA,原因很简单——它是我能找到的唯一一个,同时在四个维度上都做到极致的选择:

维度一:.NET 语言全覆盖

VSTO 和 COM Add-in 的开发体验非常痛苦——你被锁死在 .NET Framework 4.6.2/4.8 这些老框架上,C# 写了一大堆,想用 recordSpan<T>System.Text.Json 这些新特性?不好意思,不支持。

Excel-DNA 完全不一样。 它支持 .NET 6、.NET 7、.NET 8,甚至最新的 .NET 11。你可以使用 .NET 生态里所有最新、最强大的能力——高性能 JSON 序列化、原生 DI 容器、System.CommandLine 命令行框架……一切 .NET 世界里最好的东西,你都能往 Excel 插件里塞。

这意味着什么?你的 Excel 插件,不再是一个"上世纪的遗产系统",而是可以像做现代后端服务一样,用最前沿的技术栈去构建。

维度二:WebView2 前端集成

这是我最看重的能力之一。Excel-DNA 可以通过 CTP(Custom Task Pane,自定义任务窗格)在 Excel 侧边栏嵌入一个完整的 WebView2 窗口。

这是什么概念?你可以在 Excel 里跑一个完整的网页应用。

想用 Vue/React/Angular 写一个数据看板,嵌在 Excel 侧边栏?可以。想做一个可视化的图表配置器,拖拽选字段,自动生成 Excel 图表?可以。想连接你的内部系统 API,数据直接从线上拉到 Excel?可以。

VBA 做不到的、VSTO 做起来很吃力的,Excel-DNA 在一个窗格里全搞定了。

维度三:自动化能力无上限

因为跑的是完整 .NET,你可以做:

  • 读取网页内容:HttpClient + HtmlAgilityPack,批量抓取、解析、入表

  • 浏览器脚本自动化:通过 WebView2 的 DevTools Protocol,在你自己的插件里操控浏览器

  • 调用任何 REST API:对接 AI 模型、企业内部系统、第三方平台

  • 操作本地文件和数据库:读写本地文件、连接 SQLite/SQL Server,全本地跑

VBA 做这些事,要么干不了,要么代码写得极其痛苦。Excel-DNA 一行 await httpClient.GetAsync() 就解决了。

维度四:本地权限全覆盖

作为桌面插件,Excel-DNA 能调用 Windows 的全部能力:

  • 文件系统读写、注册表操作

  • Windows API 调用(P/Invoke)

  • 进程管理、服务控制

  • 剪贴板高级操作

  • 多线程并行计算

它不像 Web Add-in 那样被浏览器沙箱限制,也不像 VBA 一样单线程跑。它就是一台装着 .NET 引擎的本地超级客户端,而 Office 只是它的宿主。

唯一不完美的地方:不能跨平台

是的,Excel-DNA 只能在 Windows 上跑。Mac 用户用不了。

但说实话——在 Windows 上的 Office 二次开发领域,我实在找不到比它更强的选择了。


四、如果你做过 VSTO,看完这节你会坐不住

前面说到 VBA 的天花板。但我知道,关注我这个号的读者里,有一部分人已经超越了 VBA——你们在用 VSTO 做 Excel 插件开发。

如果你是这个群体,这一节是专门写给你的。因为看完之后你会发现:VSTO 给你设了太多天花板,而 Excel-DNA 几乎全拆了。

VSTO 开发者最痛的五件事

做过 VSTO 的都懂,以下这些场景你一定经历过:

痛一:部署是噩梦。 你辛辛苦苦写了一个插件,要发给用户。然后你发现——用户电脑上必须先装 VSTO Runtime,Office 版本要匹配,还要用 ClickOnce 或者 MSI 安装包打个半天。用户双击你的安装包,Windows 弹出各种安全警告,装完之后还要去 COM 加载项里勾选启用。一个插件安装,能劝退一半用户。

痛二:你被锁在 .NET Framework 4.x 的监狱里。 VSTO 绑定 Office 自带的运行时,最高就到 .NET Framework 4.8。C# 都出到 13 了,你还在写 2019 年的语法。想用 record 类型?不支持。想用 Span<T> 高性能内存操作?不支持。想用 System.Text.Json 的高性能序列化?不支持。

痛三:自定义函数(UDF)是个伪命题。 VSTO 做插件本质上是一个 COM Add-in,它能操控 Excel 界面和对象模型,但它不支持自定义工作表函数。你想写一个 =MySuperFormula(A1:B10) 让用户在单元格里直接调用?VSTO 做不到。你得绕道用自动化插件(Automation Add-in),那是另外一套完全不同的技术栈,而且功能受限严重。

痛四:用户必须单独安装 VSTO Runtime。 插件本身不大,但它强依赖 VSTO Runtime。普通用户的机器上大概率没装这个东西,你得要么在安装包里附带 Runtime,要么让用户自己去微软官网下载安装。多一道门槛,就多一层劝退。

痛五:RTD 实时数据流完全没概念。 想在单元格里展示实时变动的数据(股价、传感器读数、消息推送)?VSTO 只能靠定时轮询来模拟,又慢又卡。原生的 RTD(Real-Time Data)机制,VSTO 根本不支持。

Excel-DNA 怎么一招一招破掉这些痛点

下面这张表,请做 VSTO 的朋友仔细看:

对比维度

VSTO

Excel-DNA

运行时依赖

VSTO Runtime 安装失败率高,且可能需要管理员权限

编译时自带 .NET Runtime,用户无需额外安装

自定义函数(UDF)

不支持。需另起 Automation Add-in

原生支持,高性能 XLL 级函数,用户直接 =MyFunc()

异步 UDF

不支持

原生支持 async Task,函数等待时可自定义提示文案

RTD 流式函数

不支持

王牌能力——实时数据推送,时钟、行情、传感器数据直接在单元格里跳动

.NET 版本

锁死在 .NET Framework 4.x

.NET 6/8/11 随便选,能用最新 C# 语法和新框架

部署方式

COM Add-in,需安装包 + 注册表写入

XLL 文件,双击 bat 脚本即可安装

主线程安全

需手动 Control.Invoke

QueueAsMacro 一行搞定,后台任务安全写回 Excel

并发控制

不直接支持

内置 SemaphoreSlim 限流,50 个单元格同时调也不炸

动态数组

不直接支持

原生 object[,] 输入输出,完美适配 Excel 动态数组

重点展开:三个 VSTO 开发者最会心动的能力

1. RTD 流式函数——VSTO 完全没有的东西

这是 Excel-DNA 相对 VSTO 最不讲武德的能力。RTD(Real-Time Data)允许你写一个函数,让数据自己往单元格里推

什么意思?你写一个 =LIVE_STOCK("000001"),这个单元格就自动显示实时股价,每秒刷新。你写一个 =LIVE_CLOCK(),单元格里就是一个跳动的时钟。后台跑着的是一个 RTD 服务器,数据源可以是 WebSocket、MQTT 消息队列、串口传感器数据——任何实时流,都能推送到 Excel 单元格。

VSTO 做不到这个。 在 VSTO 里你要实现类似效果,要么用 Application.OnTime 定时轮询(又慢又卡),要么用 COM 事件监听(不稳定且复杂)。而 Excel-DNA 的 RTD 是 OS 级别的原生推送,不用轮询,不卡界面。

2. 异步 UDF——函数计算时,Excel 不再卡死

VBA 和 VSTO 都有的一个体验:如果你写了一个计算很重的自定义函数(比如调 AI 接口分析文本),Excel 整个界面就卡住了——鼠标转圈、无法操作、只能等。

Excel-DNA 的异步 UDF:函数在后台跑,Excel 照常用。函数计算期间,单元格显示"数据加载中……"(文案你可以自己定制),结果回来了自动填入。

50 个单元格同时调用?没问题。Skill 模板里内置了受控并发机制,用 SemaphoreSlim 限制同时请求数,不会把后端接口打爆。

WPS二次开发相关
@WPS催化剂-李伟坚
广东省
浏览 30
收藏
2
分享
2 +1
1
+1
全部评论 1
 
WPS催化剂-李伟坚
这里内容放不下,完整版到公众号阅读:https://mp.weixin.qq.com/s/2Z9I4qTV7e6csSOTUV5ncQ
   广东省
举报
0
0