javaweb导出数据库数据形成表格

javaweb导出数据库数据形成表格,第1张

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

第一步:导入依赖包—POI包(excel文件生成需要)

下载地址:https://down.tongyixiazai.com/down/27412_20170622161632.zip

选取以.jar结尾的的依赖包拖进你的web项目的lib目录下

对导入的.jar包进行添加到本项目中:

点击查看是否添加成功:

之后就可以使用POI *** 作Excel了

第二步:使用POI *** 作Excel

我们在Test里面进行讲解:

@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:/b.xls");
        wb.write(fileOut);
        fileOut.close();
    }

执行测试之后我们就可以在D盘目录下找到我们新创建的b.xls表格了。

注意:如果已经存在相同名字的文件,会被覆盖。

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

分析:
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{
 //声明需要导出的数据库,focus为数据库名称
 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);
 }
 //此时的tables=>[表名, 表名, 表名]
 //循环访问依次表名
 for(String tableName:tables){
 //声明book中的各个表
  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:/"+dbName+".xls"));
 }

执行测试之后我们就可以在D盘目录下找到我们新创建的以数据库名称为名称的.xls表格了。

结束。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/729557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存