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"));
}
將mysql數據庫中對應的表裏面的數據導入到excel中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.