將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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章