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

    }

 

你可能感兴趣的:(Excel)