Spring Boot 实现自定义 JDBC 通过 SQL 语句来查询 Excel
Spring Boot 实现自定义 JDBC 通过 SQL 语句来查询 Excel
Boot 结合自定义 JDBC 的方式sql xml path,实现通过 SQL 语句来查询 Excel 文件中的数据,这本质上是把 Excel 当作一个数据库来操作。

实现思路
要实现这个需求Spring Boot 实现自定义 JDBC 通过 SQL 语句来查询 Excel,核心是使用能识别 Excel 的 JDBC 驱动(如 结合 ,或更直接的 / 驱动)Spring Boot 实现自定义 JDBC 通过 SQL 语句来查询 Excel,通过自定义 JDBC 配置建立与 Excel 的连接,然后用标准 SQL 执行查询。以下是完整的可运行实现方案:
1. 引入核心依赖
首先在 pom.xml 中添加所需依赖( Boot 2.x/3.x 通用):
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.7.15
com.example
excel-jdbc-demo
1.0.0
org.springframework.boot
spring-boot-starter-jdbc
net.sf.supercsv
super-csv
2.4.0
org.apache.poi
poi
4.1.2
org.apache.poi
poi-ooxml
4.1.2
com.alibaba
easyexcel
3.3.2
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
26ac7a2e44b55692583120886942f115
2. 自定义 Excel JDBC 配置
创建配置类,手动配置数据源和 ,核心是指定 Excel 的 JDBC 连接 URL:
package com.example.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
@Configuration
public class ExcelJdbcConfig {
/**
* 配置Excel数据源(核心:指定Excel文件路径和JDBC驱动)
*/
@Bean(name = "excelDataSource")
public DataSource excelDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
// 1. 指定Excel JDBC驱动(这里使用POI适配的驱动,支持xls/xlsx)
dataSource.setDriverClassName("org.apache.poi.poifs.filesystem.POIFSFileSystem");
// 2. JDBC URL格式:jdbc:excel:file://[Excel文件绝对路径]
// 注意:实际生产中建议通过配置文件读取路径,这里为演示写死
String excelPath = "D:/test.xlsx"; // 替换为你的Excel文件路径
dataSource.setUrl("jdbc:excel:file://" + excelPath);
// Excel无需用户名密码,留空即可
dataSource.setUsername("");
dataSource.setPassword("");
return dataSource;
}
/**
* 自定义JdbcTemplate,关联Excel数据源
*/
@Bean(name = "excelJdbcTemplate")
public JdbcTemplate excelJdbcTemplate() {
return new JdbcTemplate(excelDataSource());
}
}
3. 核心查询工具类
封装 SQL 查询 Excel 的方法,处理 Excel 表名(默认以 sheet 名为表名):
package com.example.service;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class ExcelJdbcQueryService {
private final JdbcTemplate excelJdbcTemplate;
// 注入自定义的Excel JdbcTemplate
public ExcelJdbcQueryService(@Qualifier("excelJdbcTemplate") JdbcTemplate excelJdbcTemplate) {
this.excelJdbcTemplate = excelJdbcTemplate;
}
/**
* 执行SQL查询Excel数据
* @param sql SQL语句(表名=Excel的sheet名,字段名=Excel表头)
* @return 查询结果(List
4. 测试验证

创建测试类sql xml path,验证 SQL 查询 Excel 的效果(假设你的 Excel 文件 test.xlsx 有一个 sheet 名为 user,表头为 id、name、age):
package com.example;
import com.example.service.ExcelJdbcQueryService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
import java.util.Map;
@SpringBootTest
public class ExcelJdbcQueryTest {
@Autowired
private ExcelJdbcQueryService excelJdbcQueryService;
@Test
public void testQueryExcel() {
// 1. 编写SQL(表名=sheet名,字段名=Excel表头)
String sql = "SELECT id, name, age FROM user WHERE age > 18";
// 2. 执行查询
List<Map> result = excelJdbcQueryService.queryExcelBySql(sql);
// 3. 打印结果
System.out.println("查询结果:");
for (Map row : result) {
System.out.println("id: " + row.get("id") +
", name: " + row.get("name") +
", age: " + row.get("age"));
}
}
}
关键补充说明Excel 格式要求:Excel 的 sheet 名 对应 SQL 中的 表名;Excel 的 第一行 必须是表头(对应 SQL 中的字段名);建议表头和字段名使用英文,避免中文乱码。驱动适配优化:若上述驱动不满足需求,可替换为更成熟的 Excel JDBC 驱动(如 com.hxtt.sql.excel.),需额外引入 hxtt-excel-jdbc 依赖;替换驱动后,只需修改 为 com.hxtt.sql.excel. 即可。生产环境注意事项:
Excel 文件路径建议通过 application.yml 配置,避免硬编码:
excel: path: D:/test.xlsx
增加文件存在性校验,避免空指针;
大文件查询建议分页,避免内存溢出。
总结核心是通过 Excel 专用 JDBC 驱动 建立 Boot 与 Excel 的连接,将 Excel 视为数据库;自定义 和 绑定 Excel 数据源,即可用标准 SQL 查询 Excel(表名 = sheet 名sql xml path,字段名 = 表头);实际使用时需注意 Excel 格式规范、文件路径配置和大文件性能优化。
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » Spring Boot 实现自定义 JDBC 通过 SQL 语句来查询 Excel
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

