元数据分析以及导入数据库表中所有的数据到excel

package com.cgm.util;

import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.jsp.tagext.TryCatchFinally;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.junit.Test;


/**
* 元数据分析
* @author Administrator
*
*/
public class TestMetaData {
/*
元数据,是指仅拥有Connection一个对象的情况下,分析得出数据库的所有信息。
DataBaseMetadate  - 说明数据库的信息。
ResultSetMetadate - 说明数据结果的类型信息的。核心。
如果要进行元数据分析,就必须要使用statement,preparedstatement.
     */

@Test
   public void testExport(){
   Connection conn=null;
   try {
conn=Conutils.getCon();
DatabaseMetaData metaData=conn.getMetaData();
String dbName = metaData.getDatabaseProductName();//数据库名称
System.err.println(dbName);
System.err.println("数据库中有多少表:");
ResultSet rs2 = metaData.getTables(null,null,null,new String[]{"TABLE"});
List<String> tables = new ArrayList<String>();
//声明book
HSSFWorkbook book = new HSSFWorkbook();
Statement st = conn.createStatement();  
while(rs2.next()){
String tableName = rs2.getString("TABLE_NAME");
tables.add(tableName);
}
for(String tableName:tables){
HSSFSheet sheet = book.createSheet(tableName);
//声明sql
String sql = "select * from "+dbName+"."+tableName;
//查询数据
rs2 = st.executeQuery(sql);
//根据查询的结果,分析结果集的元数据
ResultSetMetaData rsmd = rs2.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(rs2.next()){
row = sheet.createRow(index++);
//声明列
for(int i=0;i<cols;i++){
String val = rs2.getString(i+1);
//声明列
HSSFCell cel = row.createCell(i);
//放数据
cel.setCellValue(val);
}
}
}
conn.close();
book.write(new FileOutputStream("d:/a/"+dbName+".xls"));
/**
while(rs2.next()){
String tableName = rs2.getString("TABLE_NAME");
System.err.println(tableName);
} */
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
conn.setAutoCommit(true);
conn.close();   //close变成了还链接
} catch (Exception e2) {
e2.printStackTrace();
}
}
   }
}

你可能感兴趣的:(Excel)