数据库数据导入到excel,源代码

1.支持包

    1.1commons-dbutils-1.3.jar                   操作数据库数据

    1.2mysql-connector-java-5.0.8-bin.jar   用于连接数据库

    1.3poi-3.7-20101029.jar                       POI提供API给Java程序对Microsoft Office格式档案读和写的功能

    1.4支持包使用方法:

       1.4.1在java工程文件夹中新建一个文件夹lib 然后把jar包复制到该文件夹中
       1.4.2.对该jar包单击右键,选择build path 然后选择add to build path 就可以了

2.源代码(只能应用于mysql数据库)

   2.1connection类,用于获取数据库的连接,使用需要修改密码和用户名

package s0505将数据库的数据转移到excel中;
import java.sql.Connection;
import java.sql.DriverManager;
/**
 * 用静态工厂方法管理一个唯一的可重用的连接
 */
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);
		}
	}
	//使用一个静态方法-静态工厂方法,返回connection实例
	public static Connection getCon(){
		return con;
	}
}

 2.2 主方法

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();
		}
		
}

猜你喜欢

转载自542255641.iteye.com/blog/2208685