将mysql数据库中对应的表里面的数据导入到excel中

public void export() throws Exception{
    	//声明需要导出的数据库
    	String dbName = "contacts";
    	//声明book
    	HSSFWorkbook book = new HSSFWorkbook();
    	//获取连接,从而得到数据库的元数据
    	Connection con = DataSourceUtils.getConn();
    	//声明一个staatement
    	Statement st = con.createStatement();
    	//获取元数据
        DatabaseMetaData dmd = con.getMetaData(); 
    	//获取对应的数据库中有多少表
        ResultSet rs = dmd.getTables(dbName, dbName, null, new String[]{"TABLE"});
    	//声明一个list集合存放所有的表名
        List<String> tables = new ArrayList<String>();
        //获取所有的表名  ,将表名都存放到list中 
        while(rs.next()){
        	String tableName = rs.getString("TABLE_NAME");
        	tables.add(tableName);
        }
    	
        //一个表名就是一个sheet,下面是对sheet的操作
        for(String tableName:tables){
        	//创建一个sheet
        	HSSFSheet sheet = book.createSheet(tableName);
        	//声明sql语句,将表里面的所有数据找出来
        	String sql = "select * from " + tableName;
        	//在mysql里面,结果集嵌套是不会有问题的,但是在oracle里面的结果集嵌套是会存在问题的,建议不要使用结果集嵌套
        	//获取表里面的数据
             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"));
    	
    	
    }

发布了40 篇原创文章 · 获赞 2 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章