【Excel插件推荐】xlDuckDb:在 Excel 中运行 DuckDB SQL语句

admin | 怀旧特辑

各位Excel的小伙伴们,平时做数据处理是不是总被这些问题折磨:

几万行数据用VLOOKUP/INDEX-MATCH就卡到崩溃,多表匹配更是要反复核对

CSV/JSON/Parquet文件导入Excel要反复调格式,嵌套JSON更是无从下手

大文件打开就无响应,超大数据集根本没法正常分析

跨文件、跨数据源匹配数据,要反复复制粘贴、导入导出,步骤繁琐

此前给大家介绍过Excel插件QueryStorm:https://bbs.wps.cn/topic/82050

今天给大家安利另一款完全免费开源、轻量又强悍的Excel数据神器——xlDuckDb,它把业内顶尖的分析型数据库DuckDB搬进了Excel表格,让你用一句SQL就能搞定Excel区域查询、多源数据匹配、本地/远程文件分析,不用写VBA、不用学复杂的Power Query,会基础SQL就能让数据处理效率直接拉满!

一、xlDuckDb到底是什么?xlDuckDb是一款基于DuckDB开发的Excel开源插件,核心能力就是让你在表格里直接运行DuckDB SQL语句(Use DuckDB within Excel with the xlDuckDb addin),查询结果自动以动态数组形式返回到Excel单元格中。

DuckDB本身是一款极致轻量化、高性能的嵌入式分析型数据库,被业内称为"数据分析界的瑞士军刀",而xlDuckDb把它的能力无缝接入了Excel,让我们不用切换软件,就能在熟悉的表格界面里,实现全场景数据查询与分析。

核心亮点,每一个都直击数据处理痛点核心能力

能解决什么问题

Excel区域直查

把Excel里的单元格区域、表格、命名区域直接当成数据库表查询,不用导入导出

全格式文件兼容

原生支持CSV/JSON/Parquet文件,自动识别格式,嵌套JSON、超大文件都能轻松解析

极致性能表现

支持超大数据集(甚至超过内存的文件)流畅查询,比Excel自带函数快数十倍

远程数据直连

无需下载,直接查询HTTP链接、AWS S3对象存储里的远程数据文件

多源数据联合

一条SQL就能实现Excel区域、本地文件、远程数据的关联匹配,告别跨表跨文件繁琐操作

零成本上手

轻量免安装,一键加载插件,函数自动注册,基础SQL就能实现复杂分析

二、详细安装教程下载安装包

打开插件的GitHub官方仓库:https://github.com/RusselWebber/xlDuckDb,在页面右侧【Releases】栏,下载最新版本的xlDuckDb.zip压缩包。

解压与文件解锁(关键步骤,避免拦截)

右键压缩包,选择【全部提取】,解压到本地常用文件夹(建议路径不要有中文和特殊符号)

找到解压后的xlDuckDb64.xll文件,右键选择【属性】,在属性面板底部勾选【解除锁定】,点击【确定】(Windows会默认拦截外来插件文件,不解锁会无法加载)

加载插件到Excel

首先在Excel的文件-选项-信任中心-信任中心设置-受信任位置-添加新位置中,添加xlDuckDb64.xll;

顶部菜单栏点击【开发工具】→【Excel加载项】→【浏览】,选中刚才的xlDuckDb64.xll文件,点击【确定】,在加载项列表里勾选xlDuckDb相关选项,后续打开Excel会自动加载插件。

验证安装成功

任意选中一个Excel单元格,输入=DuckDbQuery(,如果弹出函数参数提示,就说明插件已经安装成功,可以正常使用了!

三、6大核心使用场景,拿来就能用的实操示例xlDuckDb的核心函数只有一个:DuckDbQuery(),用法极简,核心参数如下:

=DuckDbQuery(SQL语句所在单元格, [可选参数], [待查询的Excel区域1], [待查询的Excel区域2], ...)小技巧:把SQL语句粘贴到Excel单元格时,开头加一个单引号',让WPS把内容识别为纯文本,避免自动修改格式报错。

场景1:查询Excel本地区域,单元格直接当表查这是最常用的功能,不用导入导出,直接把你表格里的数据区域当成数据库表,用SQL快速筛选、排序、聚合。

基础示例:你的数据存放在A1:E25单元格区域,SQL语句写在A27单元格

SQL语句(A27单元格):SELECT * FROM xlRange WHERE 积分 > 1000 ORDER BY 积分 DESC

调用公式:=DuckDbQuery(A27,,A1:E25)

执行后,查询结果会自动溢出填充到单元格中,完美匹配Excel动态数组功能

进阶用法:

命名区域/表格查询:给数据区域设置命名区域销售数据,公式可直接写=DuckDbQuery(A27,,销售数据)

多区域联合查询:传入2个及以上数据区域,SQL里用xlRange[1]、xlRange[2]对应引用,实现多表JOIN匹配

=DuckDbQuery(A27,,区域1,区域2) 对应SQL:

SELECT a.姓名, b.业绩 FROM xlRange[1] a LEFT JOIN xlRange[2] b ON a.工号 = b.工号场景2:查询本地CSV文件,告别分列与格式报错CSV是我们最常用的数据格式,但经常遇到分隔符乱、编码不对、大文件打开卡顿的问题,用xlDuckDb,一句SQL就能直接查询,DuckDB会自动识别格式、编码、数据类型。

基础示例:查询本地10000行销售数据CSV文件

SQL语句:SELECT 区域, 产品类型, 总营收 FROM 'D:/数据/销售记录.csv' LIMIT 10

调用公式:=DuckDbQuery(存放SQL的单元格)

进阶示例:SQL直接实现数据透视,比WPS透视表更灵活

PIVOT 'D:/数据/销售记录.csv' ON 区域 IN ("华东", "华北") USING SUM(总营收) GROUP BY 产品类型场景3:查询JSON文件,嵌套数据也能轻松解析遇到JSON格式的数据,尤其是多层嵌套的JSON,WPS原生功能很难解析,用xlDuckDb配合DuckDB的JSON能力,轻松提取想要的字段。

基础示例:提取JSON文件里的基础字段

SELECT 姓名, 年龄, 所属部门 FROM 'D:/数据/员工信息.json' WHERE 在职状态 = '在职'进阶示例:用JSONPath解析嵌套字段,一层嵌套也能直接提取

SELECT 姓名, 获奖记录->>'$[0].奖项名称' AS 最高奖项, 获奖记录->>'$[0].获奖时间' AS 获奖时间 FROM 'D:/数据/获奖信息.json'场景4:查询Parquet文件,大数据分析零门槛Parquet是大数据领域主流的列式存储格式,压缩比高、查询效率快,但Excel原生无法打开,用xlDuckDb就能直接查询,哪怕是GB级的超大Parquet文件,也能流畅运行。

基础示例:查询Parquet文件数据

SELECT 存活状态, 客舱等级, 性别, 年龄 FROM 'D:/数据/titanic.parquet' LIMIT 20进阶示例:聚合分析,快速统计数据规律

SELECT 客舱等级, 性别, AVG(年龄) AS 平均年龄, COUNT(*) AS 人数 FROM 'D:/数据/titanic.parquet' WHERE 存活状态 = 1 GROUP BY 客舱等级, 性别场景5:远程数据直连,不用下载直接查不用把文件下载到本地,xlDuckDb支持直接查询HTTPS链接、AWS S3对象存储里的远程数据文件,真正实现"数据不动,分析动"。

HTTPS直连示例:直接查询DuckDB官方的远程Parquet文件

SELECT * FROM 'https://duckdb.org/data/holdings.parquet' LIMIT 10S3对象存储查询:配置好密钥后,直接查询AWS S3里的云端数据,无需下载到本地,适配企业级数据存储场景。

场景6:多源数据联合查询,一条SQL搞定跨源匹配这是xlDuckDb最炸裂的功能!你可以在一条SQL里,同时关联Excel里的单元格数据、本地CSV文件、JSON文件、远程Parquet文件,实现多源数据的匹配与分析,告别跨文件反复VLOOKUP的痛苦。

示例:把本地CSV的销售数据,和JSON里的国家信息做关联匹配,统计对应数据

WITH 区域销售 AS (

SELECT 国家, SUM(总营收) AS 销售总额 FROM 'D:/数据/销售记录.csv' GROUP BY 国家

)

SELECT cs.国家, cs.销售总额, COUNT(*) AS 获奖人数

FROM 区域销售 cs

INNER JOIN 'D:/数据/诺贝尔奖得主.json' l

ON cs.国家 = l.出生国家

GROUP BY cs.国家

ORDER BY 获奖人数 DESC

LIMIT 10四、常见问题避坑指南,新手必看函数输入后不生效、无结果

优先检查:是否为64位Excel;.Net 8.0运行时是否安装;xlDuckDb64.xll文件是否已解除锁定;插件是否在加载项中正常勾选。

SQL语句粘贴到单元格后报错

解决方法:在SQL语句开头加一个单引号',让Excel将内容识别为纯文本,避免自动转换格式、拆分单元格。

文件路径查询报错

规范用法:文件路径用英文单引号包裹;路径分隔符推荐用正斜杠/,如果用反斜杠需要写双反斜杠\\;路径不要包含中文和特殊符号,避免识别失败。

中文/特殊字符乱码

插件最新版本已修复Unicode兼容问题,去GitHub仓库更新到最新版插件即可解决。

多区域查询无法识别

注意对应关系:函数里第3个参数对应SQL里的xlRange[1],第4个参数对应xlRange[2],以此类推,不要写错序号。

xlDuckDb这款插件,完美填补了Excel在大数据处理、多源数据查询上的短板,对于经常和数据打交道的财务、运营、数据分析师、HR等小伙伴来说,绝对是效率神器。

它不用你改变使用习惯,不用学习复杂的新软件,只要会基础的SQL语法,就能在Excel里实现原本需要Python、专业数据库才能完成的数据分析操作,而且完全开源免费,没有任何功能限制。

xlDuckDb 依赖于开源项目 ExcelDNA 和 DuckDB.NET 。

DuckDB 在 Excel 中的查询功能是从 商业产品 xlSlim 中提取的。如果你需要在 Digicert EV 证书签名插件中实现同样的 DuckDB 功能,那么 xlSlim 就是你要找的。xlSlim 有 Windows .msi 安装程序,可以从 Chocolatey 安装。xlSlim 的主要目的是尽可能轻松地在 Excel 中运行 Python 函数。DuckDB — xlSlim v1.0 文档 --- DuckDB — xlSlim v1.0 documentation