利用jxl把excel中的数据导入数据库

CharlesYooSky 2013-04-09

今天有一个客户把一个excel表格给我,要我把数据导入到数据库中去。

我这里 主要实现的思想是

1、把excel表格中的数据提取出来

2、建立一个对象,该对象的属性对应excel中的列属性

2、把每一行的数据封装到建立的对象中

3、把所有对象放入到一个list中

4、把list存入数据库  oh oh!

PS:个人偷懒,把所有的方法写到一个类中了(除实体类)

下面开始贴代码:

主要的操作类:Util.java

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class Util {
	
	public Connection getConn() {
		String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // 加载JDBC驱动
		String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=gdaudit"; // 连接服务器和数据库sample
		String userName = "sa"; // 默认用户名
		String userPwd = "123"; // 密码
		Connection dbConn = null;
		try {
			Class.forName(driverName);
			dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
			System.out.println("Connection Successful!"); // 如果连接成功
		} catch (Exception e) {
			e.printStackTrace();
		}
		return dbConn;
	}

	public List<CiaBO> getBO() {
		// TODO Auto-generated method stub
		List<String> list = new ArrayList<String>();
		String filePath = "d:/test.xls";
		InputStream fs = null;
		Workbook workBook = null;

		try {
			// 加载excel文件
			fs = new FileInputStream(filePath);
			// 得到 workbook
			workBook = Workbook.getWorkbook(fs);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (BiffException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		Sheet sheet = workBook.getSheet(0);// 这里只取得第一个sheet的值,默认从0开始
		Cell cell0 = null;// 就是单个单元格
		Cell cell1 = null;// 就是单个单元格
		List<CiaBO> ciaList = new ArrayList<CiaBO>();
		//该表格 一共602行  每行取前两列
		for (int i = 0; i < 77; i++) {
			CiaBO bo = new CiaBO();
			//取第一列
			cell0 = sheet.getCell(0, i);
			//取第二列
			cell1 = sheet.getCell(1, i);
			bo.setId(i+603);
			bo.setName(cell0.getContents());
			bo.setNumber(cell1.getContents());
			ciaList.add(bo);
		}
		workBook.close();// 记得关闭
		return ciaList;
	}
	
	public void save(List<CiaBO> list){
		  try {     
			  String sql = "insert into tb*****(id,name,***,***) values(?,?,?,?)";  
	            PreparedStatement prest = new Util().getConn().prepareStatement(sql);           
	            for(int x = 0; x < list.size(); x++){         
	                prest.setInt(1, list.get(x).getId());         
	                prest.setString(2, list.get(x).getName());         
	                prest.setString(3,list.get(x).getNumber());         
	                prest.setString(4, null);         
	                prest.addBatch();       
	            }         
	 
	            prest.executeBatch();         
	 
	        } catch (Exception ex) {   
	 
	            ex.printStackTrace();   
	 
	        }finally{      
	 
	        }   

	}
	
	public static void main(String args[]){
		Util db = new Util();
		List<CiaBO> list  = db.getBO();
		for (CiaBO ciaBO : list) {
			System.out.println(ciaBO.toString());
		}
		db.save(list);
	}
}

 实体类:CiaOB.java

public class CiaBO {
	private int id;
	private String name;
	private String number;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	@Override
	public String toString() {
		return "CiaBO [id=" + id + ", name=" + name + ", number=" + number
				+ "]";
	}
	
	
}

相关推荐