万事须己运,他得非我贤。这篇文章主要讲述使用POI把查询到的数据表数据导出到Excel中,一个表一个sheet.[超详细]相关的知识,希望能为你提供帮助。
一、需求二、前期准备首先我们采用Apache的POI来实现Excel的导出功能,
导入直通车--->
使用POI+hutool实现导入Excel
我们把maven依赖先准备好:
<
!-- 导出为Excel所需依赖 -->
<
dependency>
<
groupId>
org.apache.poi<
/groupId>
<
artifactId>
poi<
/artifactId>
<
version>
3.9<
/version>
<
/dependency>
<
dependency>
<
groupId>
org.apache.poi<
/groupId>
<
artifactId>
poi-ooxml<
/artifactId>
<
version>
3.9<
/version>
<
/dependency>
<
!-- 工具包 -->
<
dependency>
<
groupId>
commons-dbutils<
/groupId>
<
artifactId>
commons-dbutils<
/artifactId>
<
version>
1.6<
/version>
<
/dependency>
三、代码演示
- 首先我们先使用JDBC结合Dbutils把要导出的数据库表数据准备好
/**
* 利用jdbc来把要导出的数据表查询出来
* @return
*/
public static Map<
String,List<
Map<
String, Object>
>
>
getDataSource(){Connection con = null;
Statement sta = null;
try {
//1.注册驱动==》告诉指挥部有哪些造桥人可以调遣
Class.forName("com.mysql.cj.jdbc.Driver");
//这里是mysql为例oracle的url ---"jdbc:oracle:thin:@localhost:1521:orcl"
String url = "jdbc:mysql://127.0.0.1:3306/test";
String user = "root";
String pwd ="root";
//2.获得链接==》指挥部根据传入类型 调遣不同的造桥的人造桥
con = DriverManager.getConnection(url,user,pwd);
//3.创建Statement对象===》造车
sta = con.createStatement();
//4.执行SQL ==》运行SQL 有结果返回
String sql = "select * from user";
String sql1 = "select * from test";
//第五步处理结果还可以引入Dbutils工具包来解析结果
QueryRunner queryRunner = new QueryRunner();
//存放查询出来的数据,key为表名,value为查询出来的表字段和对应的值
Map<
String,List<
Map<
String, Object>
>
>
mapMap = new HashMap<
>
();
List<
Map<
String, Object>
>
query = queryRunner.query(con, sql, new MapListHandler());
List<
Map<
String, Object>
>
query1 = queryRunner.query(con, sql1, new MapListHandler());
//暂时以两张表为例,多张一个意思
mapMap.put("user",query);
mapMap.put("test",query1);
return mapMap;
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
return null;
}finally {
//6.关闭资源
DbUtils.closeQuietly(sta);
//Dbutils封装了关闭方法
DbUtils.closeQuietly(con);
}
}
- 接下来我们把这些数据库表数据导出到Excel
/**
* 把准备好的数据库表数据导出到本地Excel中
*/
public boolean exportExcel() {//拿到数据库表的所有信息,开始导出
Map<
String, List<
Map<
String, Object>
>
>
source = getDataSource();
//创建一个Excel模板
Workbook workbook = new XSSFWorkbook();
for (Map.Entry<
String,List<
Map<
String, Object>
>
>
mapTop :source.entrySet()) {
//获取sheet的名字以表名来命名
String sheetName = mapTop.getKey();
//创建sheet
Sheet sheet = workbook.createSheet(sheetName);
//创建第一行
Row header = sheet.createRow(0);
//从第二行开始 --来控制插入的行数
int rowSize = 1;
//便利每个表的数据
for (Map<
String, Object>
button : mapTop.getValue()){
//控制第一行的列
int columnSize = 0;
//给第一行表头赋值
for (String string :button.keySet()){
//把表头添加上
header.createCell(columnSize++).setCellValue(string);
}
//控制从第二行开始插入数据的列
int valueSize = 0;
//创建第二行每添加完一行+1
Row data = https://www.songbingjia.com/android/sheet.createRow(rowSize++);
//从第二行开始都是数据
for (Object object : button.values() ){
//防止有的列为空
if (object != null) {
data.createCell(valueSize++).setCellValue(object.toString());
}else {
data.createCell(valueSize++).setCellValue("");
}
}
}
}
try {
File file = new File("E:/template/数据库表数据.xlsx");
if (file.exists()){
file.delete();
//存在就删除
}
//保存到本地
FileOutputStream fos = new FileOutputStream("E:/template/数据库表数据.xlsx");
workbook.write(fos);
fos.close();
//存在就代表成功
return file.exists();
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
四、结果截图
文章图片
五、总结【使用POI把查询到的数据表数据导出到Excel中,一个表一个sheet.[超详细]】这样就实现了数据库表的导出,有什么疑问留言哦,如果对你有用,点赞收藏呗!!谢谢大家的观看!!!
推荐阅读
- 宙斯盾 DDoS 防护系统“降本增效”的云原生实践
- TiDB数据库生成html格式的巡检报告
- 这就是数组!——C语言基础篇
- STP(生成树协议)原理及实例配置
- Memcached一键安装入门教程
- C++类和对象--运算符重载
- 「无代码」高效的爬取网页数据神器
- Spring Cloud Alibaba入门九:Nocas配置中心(入门)
- Spring功能介绍SpringMVC集成Java Bean Validation实现参数检验功