【自荐】XLSQL:用 SQL 查询 Excel,让数据分析更简单

XLSQL:用 SQL 查询 Excel,让数据分析更简单

简介

XLSQL 是一个基于 Java 的 JDBC 驱动,让你能够像操作数据库一样,用标准的 SQL 语句来查询和操作 Excel 文件。不需要复杂的 Excel 公式,不需要 VBA 编程,只需要会 SQL,就能轻松处理 Excel 数据。

核心特色

:rocket: 自研 Native SQL 引擎

XLSQL 5.1.1 版本引入了完全自研的 Native SQL 引擎,不依赖任何外部数据库(如 HSQLDB、H2 等),这意味着:

  • 零外部依赖:减少系统资源占用,运行更轻量

  • 按需加载:只加载查询涉及的表数据,节省内存

  • 完全控制:针对 Excel 场景进行专门优化

:bar_chart: 支持主流数据库工具

完美支持 DBeaver、DataGrip 等数据库管理工具,你可以:

  • 在熟悉的数据库工具中直接查询 Excel

  • 使用可视化界面浏览 Excel 数据结构

  • 执行复杂的 SQL 查询和数据分析

:file_folder: 支持多种 Excel 格式

  • 支持 .xls.xlsx 格式

  • 自动识别工作表作为数据表

  • 第一行自动作为列标题

使用场景

1. 数据分析人员

如果你经常需要从多个 Excel 文件中提取和分析数据,XLSQL 可以让你:

  • 用 SQL 快速筛选、聚合、排序数据

  • 跨多个 Excel 文件进行 JOIN 查询

  • 避免在 Excel 中写复杂公式的烦恼

2. Java 开发者

如果你需要在 Java 项目中处理 Excel 数据:

  • 使用标准的 JDBC 接口,无需学习新的 API

  • 轻松集成到现有项目中

  • 支持 PreparedStatement,防止 SQL 注入

3. 数据库管理员

如果你习惯用 SQL 处理数据:

  • 将 Excel 文件当作数据库表来查询

  • 使用熟悉的 SQL 语法和工具

  • 快速进行数据验证和转换

快速开始

Maven 依赖

XLSQL 已发布到 Maven Central,只需在 pom.xml 中添加:

<dependency>
    <groupId>io.github.daichangya</groupId>
    <artifactId>xlsql</artifactId>
    <version>5.1.1</version>
</dependency>

基本使用示例


// 注册驱动
Class.forName("io.github.daichangya.xlsql.jdbc.xlDriver");

// 创建连接(指向包含 Excel 文件的目录)
String url = "jdbc:xlsql:excel:/path/to/excel/files";
Connection conn = DriverManager.getConnection(url);

// 执行 SQL 查询
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM test2_Sheet1 LIMIT 10");

// 处理结果
while (rs.next()) {
    System.out.println(rs.getString(1));
}

// 关闭资源
rs.close();
stmt.close();
conn.close();

在 DBeaver 中使用

  1. 打开 DBeaver,进入 DatabaseDriver Manager

  2. 点击 New 创建新驱动

  3. 填写驱动信息:

  • Driver Name: Excel JDBC Driver

  • Class Name: io.github.daichangya.xlsql.jdbc.xlDriver

  • URL Template: jdbc:xlsql:excel:{path}

  1. Libraries 标签页添加 xlsql-5.1.1.jar 文件

  2. 创建新连接,JDBC URL 格式:jdbc:xlsql:excel:/path/to/excel/files

详细配置说明请参考:DBeaver 集成指南

SQL 查询示例


-- 查询所有数据

SELECT * FROM test1_Sheet1;

-- 条件查询

SELECT * FROM test1_Sheet1 WHERE column1 = 'value';

-- 聚合查询

SELECT COUNT(*), AVG(column2) FROM test1_Sheet1;

-- 多表 JOIN

SELECT a.*, b.*

FROM test1_Sheet1 a

LEFT JOIN test2_Sheet1 b ON a.id = b.id;

-- 排序和限制

SELECT * FROM test1_Sheet1

ORDER BY column1 DESC

LIMIT 10;

系统要求

  • Java: JDK 8 或更高版本

  • 操作系统: Windows、Linux、macOS

下载和链接

直接下载 JAR 文件

为什么选择 XLSQL?

  1. 简单易用:如果你会 SQL,就能立即上手,无需学习新的语法

  2. 标准接口:使用标准 JDBC 接口,兼容所有支持 JDBC 的工具和框架

  3. 轻量高效:自研引擎,零外部数据库依赖,运行更轻量

  4. 功能完整:支持 SELECT、JOIN、聚合函数、分组、排序等常用 SQL 功能

  5. 持续更新:项目活跃维护,已从 JDK 1.4 升级到 Java 8+,代码现代化

适用人群

  • :white_check_mark: 数据分析人员,需要快速分析 Excel 数据

  • :white_check_mark: Java 开发者,需要在项目中处理 Excel 文件

  • :white_check_mark: 数据库管理员,习惯用 SQL 处理数据

  • :white_check_mark: 任何需要将 Excel 当作数据库来查询的用户

3 个赞

居然不是用AI查询 Excel…

1 个赞

emm Java门槛有点高。请问支持使用Navicat连接查询么?

dbeaver 也是一个数据库查询的客户端,可以作为navicat的替代品。下面是dbeaver的使用指南:使用Sql操作Excel-DBeaver 与 Excel JDBC 驱动使用说明 - 代老师的博客

谢谢!

ai或者duckdb 容错率很好. 类似硬核处理excel的项目大部分都无法处理数据异常

1 个赞

duckDB了解。但AI查询Excel是个啥操作呢hhh

最典型的是mcp接入把, 不需要直接表结构, 直接跟ai对话就可以开始查询了.

抛开门槛不谈,易用性上确实Navicat更好,而且Windows上一般有选择不会考虑Java的程序。

根据我自己的使用经验,目前AI在精确的数字查询、统计、分析方面,基本上都是一坨屎。每一个!