[java]代码库
1.
package s0505将数据库的数据转移到excel中;
//将一个数据库中的所有数据导入到excel中
//每一个数据库table表对应一个excel的工作表
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
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;
public class DatabaseToExcel {
public void export(){
//声明需要导出的数据库
try {
String dbName = "first";
//获取Connection,获取db的元数据
Connection con = Connection2.getCon();
//声明statement
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()){
tables.add(rs.getString("TABLE_NAME"));//得到数据库中所有的table名字,并存入list中
}
//声明表
HSSFWorkbook book = new HSSFWorkbook();
//遍历表,转移数据
for(String tableName:tables){
HSSFSheet sheet = book.createSheet(tableName);
//声明sql
String sql = "select * from "+dbName+"."+tableName;
//查询数据
rs = st.executeQuery(sql);
//根据查询的结果,分析结果集的元数据
ResultSetMetaData rsmd = rs.getMetaData();
//获取这个表table,查询有多少列
int cols = rsmd.getColumnCount();
//创建第一行
HSSFRow row = sheet.createRow(0);
for(int i=0;i<cols;i++){
//创建一个新的列
HSSFCell cell = row.createCell(i);
//写入列名
cell.setCellValue(rsmd.getColumnName(i+1));//第一个列名下标从1开始,获取列名之后就对excel表格赋值
}
//遍历数据
int index = 1;
while(rs.next()){
//创建第index+1行,因为第一行下标是0,而且第一行用来做属性名,所以数据从第二行开始,下标就是1
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("C:/Users/Administrator/Desktop/"+dbName+".xls"));
} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
new DatabaseToExcel().export();
}
}
2.
package s0503工厂方法创建connection;
import java.sql.Connection;
import java.sql.DriverManager;
//获取连接的代码: Connection conn=Connection2.getCon();
public class Connection2 {
private static Connection con;
//在静态代码块中创建与数据库的连接
static{
try{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/first";
String user="root";
String password="admin";
con = DriverManager.getConnection(url, user, password);
}catch(Exception e){
throw new RuntimeException(e.getMessage(),e);
}
}
public static Connection getCon(){
return con;
}
}
[源代码打包下载]