java导出数据库的全部表到excel

 更新时间:2020年11月25日 15:28:06   投稿:lijiao  
这篇文章主要为大家详细介绍了java导出数据库的全部表到excel的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java将某个数据库的表全部导出到excel中的方法,供大家参考,具体内容如下

第一步:如何用POI操作Excel

@Test 
public void createXls() throws Exception{
 //声明一个工作薄
 HSSFWorkbook wb = new HSSFWorkbook();
 //声明表
 HSSFSheet sheet = wb.createSheet("第一个表");
 //声明行
 HSSFRow row = sheet.createRow(7);
 //声明列
 HSSFCell cel = row.createCell(3);
 //写入数据
 cel.setCellValue("你也好");
 
 FileOutputStream fileOut = new FileOutputStream("d:/a/b.xls");
 wb.write(fileOut);
 fileOut.close();
 }

第二步:导出指定数据库的所有表

分析:

       1:某个数数据库有多少表,表名是什么?―――DataBaseMetadate.getMetadate().getTables(null,null,null,new String[]{Table});  - excel的文件名称。

  2:对每一个表进行select * 操作。 - 每一个sheet的名称。

  3:分析表结构,rs.getMetadate(); ResultSetMedated

  4:多个列,列名是什么.  - 字段名就是sheet的第一行信息。

  5:获取每一行的数据 – 放到sheet第一行以后。

@Test
 public void export() throws Exception{
 //声明需要导出的数据库
 String dbName = "focus";
 //声明book
 HSSFWorkbook book = new HSSFWorkbook();
 //获取Connection,获取db的元数据
 Connection con = DataSourceUtils.getConn();
 //声明statemen
 Statement st = con.createStatement();
 //st.execute("use "+dbName);
 DatabaseMetaData dmd = con.getMetaData();
 //获取数据库有多少表
 ResultSet rs = dmd.getTables(dbName,dbName,null,new String[]{"TABLE"});
 //获取所有表名 - 就是一个sheet
 List<String> tables = new ArrayList<String>();
 while(rs.next()){
  String tableName = rs.getString("TABLE_NAME");
  tables.add(tableName);
 }
 for(String tableName:tables){
  HSSFSheet sheet = book.createSheet(tableName);
  //声明sql
  String sql = "select * from "+dbName+"."+tableName;
  //查询数据
  rs = st.executeQuery(sql);
  //根据查询的结果,分析结果集的元数据
  ResultSetMetaData rsmd = rs.getMetaData();
  //获取这个查询有多少行
  int cols = rsmd.getColumnCount();
  //获取所有列名
  //创建第一行
  HSSFRow row = sheet.createRow(0);
  for(int i=0;i<cols;i++){
  String colName = rsmd.getColumnName(i+1);
  //创建一个新的列
  HSSFCell cell = row.createCell(i);
  //写入列名
  cell.setCellValue(colName);
  }
  //遍历数据
  int index = 1;
  while(rs.next()){
  row = sheet.createRow(index++);
  //声明列
  for(int i=0;i<cols;i++){
   String val = rs.getString(i+1);
   //声明列
   HSSFCell cel = row.createCell(i);
   //放数据
   cel.setCellValue(val);
  }
  }
 }
 con.close();
 book.write(new FileOutputStream("d:/a/"+dbName+".xls"));
 }

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • 解决redisTemplate向redis中插入String类型数据时出现乱码问题

    解决redisTemplate向redis中插入String类型数据时出现乱码问题

    这篇文章主要介绍了解决redisTemplate向redis中插入String类型数据时出现乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java源码解析CopyOnWriteArrayList的讲解

    Java源码解析CopyOnWriteArrayList的讲解

    今天小编就为大家分享一篇关于Java源码解析CopyOnWriteArrayList的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • mybatis返回结果为Map问题

    mybatis返回结果为Map问题

    这篇文章主要介绍了mybatis返回结果为Map问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • SpringBoot一个非常蛋疼的无法启动的问题解决

    SpringBoot一个非常蛋疼的无法启动的问题解决

    这篇文章主要介绍了SpringBoot一个非常蛋疼的无法启动的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java银行取钱线程安全问题实例分析

    Java银行取钱线程安全问题实例分析

    这篇文章主要介绍了Java银行取钱线程安全问题,结合具体实例形式分析了java使用线程操作模拟银行取钱的相关安全问题,需要的朋友可以参考下
    2019-09-09
  • hystrix服务降级方法使用介绍

    hystrix服务降级方法使用介绍

    什么是服务降级?当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作
    2022-09-09
  • 解析Java编程中设计模式的开闭原则的运用

    解析Java编程中设计模式的开闭原则的运用

    这篇文章主要介绍了解析Java编程中设计模式的开闭原则的运用,开闭原则多应用于Java程序的扩展开发方面,需要的朋友可以参考下
    2016-02-02
  • Spring中的AOP操作你了解吗

    Spring中的AOP操作你了解吗

    这篇文章主要为大家详细介绍了Spring中的AOP操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 基于java SSM springboot实现抗疫物质信息管理系统

    基于java SSM springboot实现抗疫物质信息管理系统

    这篇文章主要介绍了基于JAVA SSM springboot实现的抗疫物质信息管理系统,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • javaBean的基础知识及常见乱码解决方法

    javaBean的基础知识及常见乱码解决方法

    这篇文章主要介绍了javaBean的基础知识及常见乱码解决方法的相关资料,需要的朋友可以参考下
    2017-03-03

最新评论