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"));
 }

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

相关文章

  • JFinal极速开发框架使用笔记分享

    JFinal极速开发框架使用笔记分享

    下面小编就为大家分享一篇JFinal极速开发框架使用笔记,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • SpringBoot超详细讲解yaml配置文件

    SpringBoot超详细讲解yaml配置文件

    这篇文章主要介绍了SpringBoot中的yaml配置文件问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 教你使用springboot配置多数据源

    教你使用springboot配置多数据源

    发现有很多小伙伴还不会用springboot配置多数据源,今天特地给大家整理了本篇文章,文中有非常详细的图文介绍及代码示例,对正在学习java的小伙伴很有帮助,需要的朋友可以参考下
    2021-05-05
  • JpaRepository如何实现增删改查并进行单元测试

    JpaRepository如何实现增删改查并进行单元测试

    这篇文章主要介绍了JpaRepository如何实现增删改查并进行单元测试,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 解决在Gradle/IDEA中无法正常使用readLine的问题原因

    解决在Gradle/IDEA中无法正常使用readLine的问题原因

    这篇文章主要介绍了在Gradle/IDEA中无法正常使用readLine的解决方法,原因是由于Gradle的标准输入默认并不与系统标准输入绑定,需手动设置,需要的朋友可以参考下
    2021-12-12
  • Java之单例设计模式示例详解

    Java之单例设计模式示例详解

    这篇文章主要介绍了Java之单例设计模式示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java十大经典排序算法的实现图解

    Java十大经典排序算法的实现图解

    Java常见的排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文详解介绍Java十大十大经典排序算法的实现以及图解,需要的可以参考一下
    2022-03-03
  • IntelliJ IDEA中出现

    IntelliJ IDEA中出现"PSI and index do not match"错误的解决办法

    今天小编就为大家分享一篇关于IntelliJ IDEA中出现"PSI and index do not match"错误的解决办法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java中常用的设计模式之责任链模式详解

    Java中常用的设计模式之责任链模式详解

    这篇文章主要为大家详细介绍了Java中常用的设计模式之责任链模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Springcloud之Gateway组件详解

    Springcloud之Gateway组件详解

    Spring Cloud Gateway是Spring Cloud微服务生态下的网关组件。Spring Cloud Gateway是基于Spring 5和Spring Boot 2搭建的,本质上是一个Spring Boot应用。本文详细介绍了SpringCloud的网关组件 Gateway,,需要的朋友可以参考下
    2023-05-05

最新评论