使用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 ...
随机推荐
- docker 创建各容器命令合集
学习中...持续更新 docker-compose安装: curl -L https://github.com/docker/compose/releases/download/1.27.4/dock ...
- MRCTF (re和crypto)wp
RE: 一.PixelShooter(这题比赛我居然没看,靠,血亏,所以做不出来就不要一直死怼,这题挺好写的,) unity一般是用c#写的,刚好又是apk,可以用dnspy来反编译看看,在源码中找到 ...
- buu 新年快乐
一.查壳 发现是upx的壳. 二.拖入ida,发现要先脱壳. 题外话.总结一下手动脱壳,esp定律: 1.先单步到只有esp红色时,右键数据窗口跟随. 2.到数据窗口后,左键硬件访问,byte和wor ...
- 使用Hugo框架搭建博客的过程 - 前期准备
前言 这篇教程介绍了如何搭建这样效果的博客. 所需步骤 可以从这样的角度出发: 注册域名. 使用CDN加快网站访问速度. 网站内容需要部署在服务器或对象存储平台上. 重要的是放什么内容.博客需要选择框 ...
- windows服务器下MySQL配置字符集
这俩天公司使用.netcore微服务+mysql做项目,mysql在使用的时候总是出现一些字符集的问题,修改utf8或utf8mb4后mysql的服务就启动不了,这里做下记录如果把my.ini中的字符 ...
- 「SDOI2016」数字配对
「SDOI2016」数字配对 题目大意 传送门 题解 \(a_i\) 是 \(a_j\) 的倍数,且 \(\frac{a_i}{a_j}\) 是一个质数,则将 \(a_i,a_j\) 质因数分解后,其 ...
- Selnium + POM + Pytest:学习记录
简介 selenium POM Pytest 结合,通过Pytest fixture 来传递Driver 保证一个测试用例[1] :driver[1] 学习记录 插件包 selenium: 操作浏览器 ...
- 新iPhone有望加入指纹解锁,你会买吗?
苹果新款iPhone即将在9月份正式发布,或命名为iPhone 13或者iPhone 12s.据外媒报道,新一代iPhone的屏幕和相机都将迎来重大升级,同时还将首次加入屏下指纹解锁技术.你期待吗? ...
- Axure RP 9 Enterprise/Pro/Team for Mac/Windows安装破解版激活教程
Axure RP 9.0 是一款功能强大的.操作方便.专业可靠的快速原型设计工具.一款能够在这里体验最简单的设计方式,这里有着全新的升级的软件界面,更加的时尚,更加的丰富,专为每一个用户提供了便捷的设 ...
- (opencv01)读入图像
(opencv01)Opencv之读入图像 读入图像 img = cv2.imread(filepath, flags) filepath : 要读入图片的完整路径 flags : 读入图片的标志 ...