用SQL实现Excel文件的CRUD操作

用SQL实现Excel文件的CRUD操作1 简介在 Java 中操作 Excel 文件是常见的需求 无论是读取测试数据 生成报表 还是处理业务数据 都需要与 Excel xls 或 xlsx 进行交互 Java 生态提供了多种库来实现这一功能 从轻量级到企业级工具各有特点

大家好,欢迎来到IT知识分享网。

1. 简介

Java 中操作 Excel 文件是常见的需求,无论是读取测试数据、生成报表,还是处理业务数据,都需要与 Excel(.xls 或 .xlsx)进行交互。Java 生态提供了多种库来实现这一功能,从轻量级到企业级工具各有特点。以下是 Java 中操作 Excel 的主流库及其核心特点概述:

  • Apache POI:功能全面,支持新旧版 Excel 格式及复杂操作(如公式、图表),但大文件处理时内存消耗高,易内存溢出。
  • EasyExcel:基于 POI 优化,采用 SAX 模式逐行读取,适合大数据量操作,内存占用低,API 简洁易用。
  • JExcelAPI:轻量级,仅支持旧版 .xls 格式,API 简单,但功能有限,已逐渐被淘汰。

若需兼顾易用性与查询灵活性,Fillo 是一个独特选择。它通过 类 SQL 语法 简化操作,隐藏底层复杂度,尤其适合测试数据管理、快速报表生成等场景,且对小文件性能友好。

什么是Fillo?

Fillo 是 Java 的 Excel API,可以查询 xls 和 xlsx 文件。现在,它支持带或不带 WHERE 子句的 SELECT、UPDATE 和 INSERT 查询。与 JXL API 和 Apache POI 等传统库相比,Fillo 的接口设计显著简化了操作流程。传统库需要开发者手动编写大量代码来遍历行列、提取单元格值,并处理不同数据类型的转换;而 Fillo 在内部自动完成了这些底层逻辑,开发者无需关注行/列索引或单元格格式等细节。更关键的是,Fillo 支持通过 标准 SQL 语句 直接实现数据的增删改查(CRUD),例如用 SELECT * FROM Sheet1 WHERE Age > 25 即可筛选数据,而 Apache POI 实现同等功能需数十行 Java 代码,极大降低了开发复杂度。

2.实战案例

2.1 准备环境

首先,引入依赖

<dependency> <groupId>com.codoid.products</groupId> <artifactId>fillo</artifactId> <version>1.23</version> </dependency>

最后,准备Excel文件

用SQL实现Excel文件的CRUD操作

2.2 Select查询操作

static String file = "C:\\Users\\MSI-NB\\Desktop\\user.xlsx"; public static void select() throws Exception { Fillo fillo = new Fillo() ; Connection conn = fillo.getConnection(file); String strQuery = "Select * from baseInfo where name='陈浩然'"; Recordset rs = conn.executeQuery(strQuery); while (rs.next()) { System.err.printf("%s\t%s\t%s\t%s\t%s\t%n", rs.getField("id"), rs.getField("name"), rs.getField("age"), rs.getField("email"), rs.getField("idNo")) ; } // 多个Where条件 rs = conn.executeQuery( "Select * from baseInfo where name='杨晨曦' and age='52'"); while (rs.next()) { System.out.printf("%s\t%s\t%s\t%s\t%s\t%n", rs.getField("id"), rs.getField("name"), rs.getField("age"), rs.getField("email"), rs.getField("idNo")) ; } // 通过方法构建where条件 rs = conn.executeQuery("Select * from baseInfo").where("name='黄俊杰'") .where("idNo=''"); while (rs.next()) { System.err.printf("%s\t%s\t%s\t%s\t%s\t%n", rs.getField("id"), rs.getField("name"), rs.getField("age"), rs.getField("email"), rs.getField("idNo")) ; } rs.close(); conn.close(); }

输出结果

用SQL实现Excel文件的CRUD操作

2.3 Insert插入操作

static String file = "C:\\Users\\MSI-NB\\Desktop\\user.xlsx"; public static void insert() throws Exception { Fillo fillo = new Fillo(); Connection conn = fillo.getConnection(file); String strQuery = "INSERT INTO baseInfo (id, name, age, email, idNo) VALUES (9, 'Pack张三', 33, '', '66')"; conn.executeUpdate(strQuery); conn.close(); }

执行结果

用SQL实现Excel文件的CRUD操作

控制台输出

5 columns(s) affected

2.4 Update更新操作

static String file = "C:\\Users\\MSI-NB\\Desktop\\user.xlsx"; public static void update() throws Exception { // ... String sql = "Update baseInfo Set name='Spring Boot3实战案例200讲' where id=9"; conn.executeUpdate(sql) ; // ... }

执行结果

用SQL实现Excel文件的CRUD操作

2.5 Delete删除操作

static String file = "C:\\Users\\MSI-NB\\Desktop\\user.xlsx"; public static void delete() throws Exception { // ... String strQuery = "DELETE FROM baseInfo where id=9"; conn.executeUpdate(strQuery); // ... }

执行结果

用SQL实现Excel文件的CRUD操作

控制台输出

1 row(s) affected

2.6 Like模糊查询

static String file = "C:\\Users\\MSI-NB\\Desktop\\user.xlsx"; public static void likeQuery() throws Exception { // ... String strQuery = "Select * from baseInfo where name like '%陈%'"; Recordset rs = conn.executeQuery(strQuery); // ... }

输出结果

用SQL实现Excel文件的CRUD操作

2.7 Distinct去重操作

public static void distinctOperator() throws Exception { // ... String strQuery = "Select DISTINCT name from baseInfo"; Recordset rs = conn.executeQuery(strQuery); while (rs.next()) { System.err.printf("%s%n", rs.getField("name")); } // ... }

准备数据

用SQL实现Excel文件的CRUD操作

执行结果

用SQL实现Excel文件的CRUD操作

去除重复的姓名。

2.8 设置起始行&列

public static void setRowAndColumn() throws Exception { // Table start row System.setProperty("ROW", "1"); // Table start column System.setProperty("COLUMN", "1"); Fillo fillo = new Fillo(); Connection conn = fillo.getConnection(file); String strQuery = "Select * from baseInfo"; Recordset rs = conn.executeQuery(strQuery); // ... }

输出结果

用SQL实现Excel文件的CRUD操作

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/187537.html

(0)
上一篇 2025-09-05 07:33
下一篇 2025-09-05 07:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信