将excel数据导入oracle中

近日做的项目中需要实现每天定时将excel的数据导入到oracle中,在网上查找了相关资料,最后决定用poi包来实现。 

poi包的下载地址大家可以在网上搜索一下,下载以后导入到我们的项目中去。

下面是实现代码:

package com.hdkj.ws;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.hssf.record.*;
import org.apache.poi.hssf.model.*;
import org.apache.poi.hssf.util.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate;

import com.hdkj.pmis.util.*;
import java.io.FileInputStream;


public class GetDataFromExcel {

 public void importToDb(String sDate) {
  try {
   //String fileToBeRead ="D://jboss-dljy//ddjhdate//rjh_llx"+sDate+".xls";
   String fileToBeRead = "c://rjh_llx20071007.xls";
   String tempdate = sDate.substring(0, 4) + "-"
   + sDate.substring(4, 6) + "-"
   + sDate.substring(6, 8);
   if (fileToBeRead.equals(null)) {
    System.out.println("没有找到相应的excel文件");
   } else {
//    导入前先删除当天的数据
    String sqlu = "delete from jy_llx where d_jyrq='"+tempdate+"'";
    JdbcUtil.execute(sqlu);
    
    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
      fileToBeRead));
    HSSFSheet sheet = workbook.getSheetAt(0);
    int rows = sheet.getPhysicalNumberOfRows();
    for (int r = 4; r < rows; r++) {
     HSSFRow row = sheet.getRow(r);
     if (row != null) {
      int cells = row.getPhysicalNumberOfCells();
      String value = "";
      for (short c = 1; c < 31; c++) {
       HSSFCell cell = row.getCell(c);
       if (cell != null) {
        switch (cell.getCellType()) {
        case HSSFCell.CELL_TYPE_FORMULA:
         //
         break;
        case HSSFCell.CELL_TYPE_NUMERIC:
         value += (long) cell.getNumericCellValue()
           + ",";
         break;
        case HSSFCell.CELL_TYPE_STRING:
         value += "'" + cell.getStringCellValue()
           + "'" + ",";
         break;
        default:
         value += "null,";

        }
       } 
      }
      
           // 加入交易时间
      value = value + "'" + tempdate + "'";

      // value = value.substring(0, value.length()-1);
      // 下面可以将查找到的行内容用SQL语句INSERT到oracle
      String sql = "insert into jy_llx(C_SK,C_CF,C_XZ,N_DLIANG,S1,S4,S8,S12,S16,S20,S24,S28,S32,S36,S40,S44,S48,S52,S56,S60,S64,S68,S72,S76,S80,S84,S88,S92,S96,C_JC,D_JYRQ,C_ID) values("
        + value + ",llx_id.nextval)";
      JdbcUtil.execute(sql);
     }
    }
    
    //删除电量为空的记录
    String sqldel = "delete from jy_llx where N_DLIANG is null and d_jyrq='"+tempdate+"'";
    JdbcUtil.execute(sqldel);
   }
  } catch (Exception e) {
   System.out.println(e);
  }
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值