使用POI把查询到的数据表数据导出到Excel中,一个表一个sheet.最详细!!!
一、需求
我们会遇到开发任务:
经理:小王,你来做一下把数据库里的数据导出到Excel中,一个表是一个sheet,不要一个表一个Excel.
小王:好的,经理.(内心一脸懵逼)
二、前期准备
首先我们采用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 = 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.最详细!!!的更多相关文章
- 表结构导出到excel中
SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull ...
- 把数据库里面的stu表中的数据,导出到excel中
# 2.写代码实现,把我的数据库里面的stu表中的数据,导出到excel中 #编号 名字 性别 # 需求分析:# 1.连接好数据库,写好SQL,查到数据 [[1,'name1','男'],[1,'na ...
- 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>
前台datagrid数据绑定 #region 导出到excel中 /// <summary> /// 2014-6-6 /// </summary> / ...
- 如何将存储在MongoDB数据库中的数据导出到Excel中?
将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...
- 数据可视化之powerBI基础(十一)Power BI中的数据如何导出到Excel中?
https://zhuanlan.zhihu.com/p/64415543 把Excel中数据加载到PowerBI中我们都已经熟悉了,但是怎么把在PowerBI中处理好的数据导出到Excel中呢?毕竟 ...
- Excel中的表单控件和active控件
EXCEL中有两种控件:表单控件和active控件 表单控件是excel5和excel95开始使用的,从excel97开始,active控件开始出现 关于表单控件和active控件的区别和使用范围,网 ...
- 将Datagridview中的数据导出至Excel中
首先添加一个模块ImportToExcel,并添加引用 然后导入命名空间: Imports Microsoft.Office.Interop Imports System.Da ...
- 在这个应用中,我使用了 MQ 来处理异步流程、Redis 缓存热点数据、MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ、MySQL 持久化的数据也会存在于一个分布式文件系统中,他们之间的调用也是需要用 RPC 来完成数据交互的。
在这个应用中,我使用了 MQ 来处理异步流程.Redis 缓存热点数据.MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ.MySQ ...
- python3查询Excel中A表在B表没有的数据,并保存到新的Excel,这里用的是“xlrd”和“xlwt”
import xlrd import xlwt # 打开A表,将A表的数据存放到cols1中,这里打印出来是方便查看测试数据. data1 = xlrd.open_workbook(r'F:\cars ...
随机推荐
- 详解 MD5 信息摘要算法
对于软件研发人员来说 MD5 不是一个陌生的词汇,平时的软件研发中,经常使用 MD5 校验消息是否被篡改.验证文件完整性,甚至将MD5当作加密算法使用. MD5虽不陌生,但不是所有研发人员都了解其算法 ...
- Linux:Ubuntu配置jdk环境变量
1.下载jdk 推荐官网:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 下载tar.gz包即可. ...
- 计算机基础 | 文档神器docsify安装及基本使用
为啥要用docsify? 神器Docsify让你的文档变得美观,配合typora,从此爱上看文档,各种优点:小巧.快速.美观.方便.快捷.上手快,可以浏览如下优秀案例 ve-charts pyecha ...
- 备战-Java 基础
备战-Java 基础 仰天大笑出门去,我辈岂是蓬蒿人. 简介:备战-Java 基础. 一.基本数据类型 1.Java基本数据类型 基本数据类型有8种:byte.short.int.long.float ...
- linux挂载光驱
挂载光驱到linux中.linux的镜像盘中有安装oracle的所有的软件包,可以会用yum一键安装. 1.此时的linux的界面显示光驱图标 2.挂载 因为光盘里面的文件是只读模式的,yum安装时不 ...
- CQOI 2021 游记
CQOI 2021 游记 Stage -1 \(\texttt{NOIP}\) 考的比较爆炸所以觉得自己没啥指望了. Stage 0
- C语言:已知三角形三边长求面积
//已知三角形三边长求面积 #include <stdio.h> #include <math.h> int main() { float a,b,c,p,s; int x=0 ...
- Intellij idea 设置关闭自动更新
目录结构: File -> Settings- -> Appearance & Behavior -> System Settings -> Updates 把Auto ...
- 开源桌面快速启动工具-GeekDesk
GeekDesk 小巧.美观的桌面快速启动工具 开发框架 wpf .net 4.7.2 HandyControl 全局热键 鼠标跟随 快速启动 随时随地 支持自定义热键 支持鼠标跟随 自定义壁纸 随意 ...
- static能修饰什么
简洁易懂讲清原理,讲不清你来打我~ 修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在main函数运行前就分配空间,有初始值就初始值,没有初始值就系统默认值初始化 修饰普通函数,修改函 ...