首页 > 学院 > 开发设计 > 正文

java—将某个数据库的表全部导出到excel中(43)

2019-11-14 23:53:55
字体:
来源:转载
供稿:网友
java—将某个数据库的表全部导出到Excel中(43)

如何操作excel。――POI-apache。JXL-。

第一步:如何用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"));    }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表