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

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

相关文章

  • 浅谈java多线程编程

    浅谈java多线程编程

    这篇文章主要介绍了java多线程编程的相关资料,文中讲解非常细致,帮助大家更好的理解和学习java多线程,感兴趣的朋友可以了解下
    2020-08-08
  • MyBatis Plus逻辑删除和分页插件使用详解

    MyBatis Plus逻辑删除和分页插件使用详解

    这篇文章主要介绍了MyBatis Plus之逻辑删除和分页插件使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java9的一些新特性介绍

    Java9的一些新特性介绍

    这篇文章主要介绍了Java9的一些新特性介绍,Java随着其开源的特点和甲骨文的推动正在不断改进中,需要的朋友可以参考下
    2015-07-07
  • java的几种定时器的具体使用(4种)

    java的几种定时器的具体使用(4种)

    本文主要介绍了4种类型的定时器:@Scheduled注解、quartz、new Timer().schedule、使用线程控制的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2021-09-09
  • Spring中单例和多例的深入理解

    Spring中单例和多例的深入理解

    这篇文章主要介绍了Spring中单例和多例的深入理解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springboot 设置server.port不生效的原因及解决

    springboot 设置server.port不生效的原因及解决

    这篇文章主要介绍了springboot 设置server.port不生效的原因及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java11中的新增字符串APIs使用实例探究

    Java11中的新增字符串APIs使用实例探究

    这篇文章主要为大家介绍了Java11中的新增字符串APIs使用实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 基于spring boot 的配置参考大全(推荐)

    基于spring boot 的配置参考大全(推荐)

    下面小编就为大家带来一篇基于spring boot 的配置参考大全(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java正则表达式匹配电话格式

    Java正则表达式匹配电话格式

    正则表达式是由普通的字符以及特殊字符组成的文字模式,用来在查找文字主体时待匹配的一个或多个字符串。本文给大家介绍java正则表达式匹配电话格式,对java正则表达式匹配相关知识感兴趣的朋友一起学习吧
    2015-11-11
  • Java基础精讲方法的使用

    Java基础精讲方法的使用

    方法,也称函数,如果想要重复一段或者多段代码块的使用,可以将这些代码封装成一个方法,方法具体表现为某种行为,使用方法可以提高代码的复用性
    2022-05-05

最新评论