使用POI把查询到的数据表数据导出到Excel中,一个表一个sheet.[超详细]

万事须己运,他得非我贤。这篇文章主要讲述使用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.[超详细]

文章图片

五、总结【使用POI把查询到的数据表数据导出到Excel中,一个表一个sheet.[超详细]】这样就实现了数据库表的导出,有什么疑问留言哦,如果对你有用,点赞收藏呗!!谢谢大家的观看!!!

    推荐阅读