欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-11 10:18:43
本文实例为大家分享了java将某个数据库的表全部导出到excel中的方法,供大家参考,具体内容如下 第一步:如何用poi操作excel @test pu...

本文实例为大家分享了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"));
 }

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