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 + "]"; } }