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