开发者社区> java牛> 正文

数据库多张表导出到excel

简介: 数据库多张表导出到excel public static void export() throws Exception{   //声明需要导出的数据库   String dbName = "hdcloude";   //声明book   HSSFWorkbook book = new H...
+关注继续查看

 数据库多张表导出到excel


public static void export() throws Exception{

  //声明需要导出的数据库

  String dbName = "hdcloude";

  //声明book

  HSSFWorkbook book = new HSSFWorkbook();

  //获取Connection,获取db的元数据

  //Connection con = DataSourceUtils.getConn();

  Connection con =DriverManager.getConnection("jdbc:MySQL://127.0.0.1:3306", "root", "root");

  //声明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");

  System.out.println(tableName);

  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("\\"+dbName+".xls"));

}

若转载请注明出处!若有疑问,请回复交流!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用Navicat导出数据库表中特定的数据
使用Navicat导出数据库表中特定的数据 以导出字典表数据为例 在自己开发库添加好的字典,每次交版还需要再客户的环境上再操作一遍,自己手动添加或修改费事费力 ,还容易出错
14 0
OushuDB-准备导出的表
OushuDB-准备导出的表
9 0
使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本并生成表在数据库
使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本并生成表在数据库
59 0
将Excel数据导入Tables/数据库/实体
将Excel数据导入Tables/数据库/实体
57 0
数据库——多种方法导入Excel数据
数据库——多种方法导入Excel数据
291 0
mysql数据库导出表结构到excel表中
在进行数据比对、分析时,直接通过数据库查看是不可取的,而且不可能在每个电脑上都装数据库查看工具,这时就需要把数据库以其他形式提取出来。
514 0
+关注
java牛
善于分享,乐于分享
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
大批量处理excel文件到ODPS中方案
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多