用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

数据库--将数据库数据转移到excel文档中

2015-12-20 作者: 永夜极光举报

[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;
	}
}

[源代码打包下载]




网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...