通过POI将Excel数据导入数据库

http://chengyue2007.iteye.com/blog/455911

上一篇写了从数据库导出excel。今天继上一篇写出从excel导入数据库。数据库表有这些字段:ID,BOOK_NAME,BOOK_AUTHOR,BOOK_PUBLISH,BOOK_DATE,BOOK_ISBN,BOOK_PAGE,BOOK_PRICE。

连接数据库类:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {

private String classString="oracle.jdbc.driver.OracleDriver";
private String username="benz";
private String password="benz";
private String url="java:oracle:thin:@192.168.1.17:1521:bhdba";
private Connection con=null;

public Connection getConnection(){
   try {
    Class.forName(classString);
    con=DriverManager.getConnection(url,username,password);
   } catch (ClassNotFoundException e) {
    e.printStackTrace();
   } catch (SQLException e) {
    e.printStackTrace();
   }
   return con;
}

}

具体操纵类:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;

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 ExcelToDB {

private Connection con;
private DBConnection db;
private PreparedStatement pst;
private String filePath="f:\\test.xls";

public boolean insertDB(){
  
   boolean flag=true;
   db=new DBConnection();
   con=db.getConnection();
   try {
    //文件流指向excel文件
    FileInputStream fin=new FileInputStream(filePath);
    HSSFWorkbook workbook=new HSSFWorkbook(fin);//创建工作薄
    HSSFSheet sheet=workbook.getSheetAt(0);//得到工作表
    HSSFRow row=null;//对应excel的行
    HSSFCell cell=null;//对应excel的列
   
    int totalRow=sheet.getLastRowNum();//得到excel的总记录条数
    //以下的字段一一对应数据库表的字段
    String bookName="";
    String bookAuthor="";
    String bookPublish="";
    Date bookDate=null;
    String bookIsbn="";
    int bookPage=0;
    float bookPrice=0.0f;
   
    String sql="insert into book(ID,BOOK_NAME,BOOK_AUTHOR,BOOK_PUBLISH," +
      "BOOK_DATE,BOOK_ISBN,BOOK_PAGE,BOOK_PRICE) " +
      "values(SEQ_BOOK.NEXTVAL,?,?,?,?,?,?,?)"; //SEQ_BOOK.NEXTVAL为数据库表序列
   
    for(int i=1;i<=totalRow;i++){
     row=sheet.getRow(i);
     cell=row.getCell(1);
     bookName=cell.getRichStringCellValue().toString();
     cell=row.getCell(2);
     bookAuthor=cell.getRichStringCellValue().toString();
     cell=row.getCell(3);
     bookPublish=cell.getRichStringCellValue().toString();
    
     cell=row.getCell(4);
     //格式化字符串时间
     SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
     bookDate=new Date((format.parse(cell.getRichStringCellValue().toString())).getTime());
    
     cell=row.getCell(5);
     bookIsbn=cell.getRichStringCellValue().toString();
     cell=row.getCell(6);
     bookPage=Integer.parseInt(cell.getRichStringCellValue().toString());
     cell=row.getCell(7);
     bookPrice=Float.parseFloat(cell.getRichStringCellValue().toString());
    
     pst=con.prepareStatement(sql);
     pst.setString(1,bookName);
     pst.setString(2,bookAuthor);
     pst.setString(3,bookPublish);
     pst.setDate(4,bookDate);
     pst.setString(5,bookIsbn);
     pst.setInt(6,bookPage);
     pst.setFloat(7,bookPrice);
    
     pst.execute();
    }
   
   
   } catch (FileNotFoundException e) {
    flag=false;
    e.printStackTrace();
   } catch(IOException ex){
    flag=false;
    ex.printStackTrace();
   } catch(SQLException exx){
    flag=false;
    exx.printStackTrace();
   } catch(ParseException exxx){
    exxx.printStackTrace();
   }finally{
    try {
     pst.close();
     con.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   return flag;
  
}

public static void main(String args[]){
   ExcelToDB toDB=new ExcelToDB();
   toDB.insertDB();
}

}

 取得Excel文件的总行数和总列数
HSSFSheet hssheet = wb.getSheetAt(0);
  HSSFRow row = (HSSFRow) hssheet.getRow(0);   
  int rowNum = hssheet.getPhysicalNumberOfRows();
  short colNum = (short)hssheet.getRow((short)0).getPhysicalNumberOfCells();

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值