采用的是jxl,所以需要导jxl-2.4.2.jar的jar包.(前提知道excel表的目录):

 

   //用log记录异常信息

    private static final Logger log = LoggerFactory.getLogger(NwcfgdmService.class);

   //采用spring注解方式调用dao层的查询方法  

    @Autowired  
    private CirCuitBoInf cirCuitBo;

public void excelToDb(){
    Workbook rwb=null;
    FileWriter fw = null;
    try {

      //默认的excel路径为D://opt/BOCO/name.xls
      InputStream is=new FileInputStream(new File("D:"+File.separator+"opt"+File.separator+"BOCO"+File.separator+"name.xls"));//读取文件
      rwb=Workbook.getWorkbook(is);
      Sheet rs=rwb.getSheet(0);
      try {

        //同是将数据库插入出现的异常记录在error.text文件上
        fw = new FileWriter("D:"+File.separator+"opt"+File.separator+"BOCO"+File.separator+"error.text",true);
        // 第二个参数 true 表示写入方式是追加方式
      } catch (Exception e) {
        e.printStackTrace();
        log.error("书写异常日志信息失败",e);
      }
      int rsRows=rs.getRows();
      // System.out.println(rsRows);
      int rsClos=rs.getColumns();
      // System.out.println(rsClos+"----");
      // 因为excel的第一行一般都是实体类的属性。所以从i从1开始取,这样就直接能读取数据了
      for(int i=1;i<rsRows;i++){
        for(int j =0;j<rsClos;j++){
        //默认最左边编号也算一列,所以这里是j++

        //时间的格式默认是yyyy/MM/dd,格式可自定义
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        String id=rs.getCell(j++, i).getContents()+"";
        String name=rs.getCell(j++, i).getContents()+"";

        String end_date = rs.getCell(j++, i).getContents();

         Date end_dates = new Date();
        if(! end_date.equals("")){
        try{
          end_dates = sdf.parse(end_time);
        }catch(ParseException e){
          e.printStackTrace();
          log.error("名字为"+name+"的使用期限的格式不对,格式应该为'yyyy/MM/dd'",e);
          fw.write("名字为"+name+"的使用期限的格式不对,格式应该为'yyyy/MM/dd'"+"\r\n");
        }  
       }
        // 接下来就是把从excel读取到的内容逐个set到Person对象中。然后将对象添加到集合。
        Person c =new Person();
        c.setId(id);
        c.setName(name);
        c.setEnd_date(end_dates);
        try {
          cirCuitBo.addCirCuit(c);
        } catch (UncategorizedSQLException e) {
        e.printStackTrace();
          log.error(c.getName()+"这条数据的某个字段长度超出了数据库定义的最大长度",e);
          fw.write(c.getName()+"这条数据的某个字段长度超出了数据库定义的最大长度"+"\r\n");
          // System.out.println("错误信息:"+e+"---------");
        }catch(DataIntegrityViolationException e){
          e.printStackTrace();
          log.error(c.getName()+"这条数据的时间格式不对",e);
          fw.write(c.getName()+"这条数据的时间格式不对"+"\r\n");
        }catch(Exception e){
          e.printStackTrace();
          log.error(c.getName()+"这条数据插入失败",e);
        }
    }
  }
}
    }catch (FileNotFoundException e) {
      e.printStackTrace();
      log.error("该目录下不存在该文件",e);
    }catch(Exception e){
      e.printStackTrace();
      log.error("读取文件失败,请重新操作",e);
    }finally{
      rwb.close();
    try{
      fw.close();
    }catch (IOException e){
    e.printStackTrace();

    log.error("操作失败",e);
}
}
}

excel表里的数据导入到数据库里的更多相关文章

  1. jsp+servlet上传excel并将数据导入到数据库表的实现方法

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. Excel、记事本数据导入到数据库

    将手机号批量导入数据库.思路:先将要导入的文件传上项目里,然后读取文件的每行数据并插入数据库,操作完后再将上传的文件删除 文件示例: Excel: 记事本:   前台代码: <div class ...

  3. sqlserver怎么将excel表的数据导入到数据库中

    在数据库初始阶段,我们有些数据在EXCEL中做好之后,需要将EXCEL对应列名(导入后对应数据库表的字段名),对应sheet(改名为导入数据库之后的表名)导入指定数据库, 相当于导入一张表的整个数据. ...

  4. SQL语句:把Excel文件中数据导入SQL数据库中的方法

    1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...

  5. 把excel中的数据导入到数据库

    import.php <?php header("Content-Type:text/html;charset=utf-8"); echo '<html> < ...

  6. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  7. 用ttBulkCp把excel中的数据导入到timesten数据库中

    最近要做数据预处理,需要用到数据库.而且是以前从来没听说过的TimesTen. 首要目标是要把Excel里的数据,导入到TimesTen数据库中.而TimesTen在win10里用不了,于是我就在虚拟 ...

  8. java实现EXCEL数据导入到数据库中的格式问题的解决

    之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...

  9. 把Excel数据导入到数据库

    引入命名空间 using System.IO; using System.Data; using System.Data.OleDb; 引入命名空间 首先要把Excel上传到服务器 //上传Excel ...

随机推荐

  1. java集合——Collection接口

    Collection是Set,List接口的父类接口,用于存储集合类型的数据. 2.方法 int size():返回集合的长度 void clear():清除集合里的所有元素,将集合长度变为0 Ite ...

  2. go——beego的数据库增删改查

    一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也 ...

  3. Log4J实用配置指南

    转自:http://www.cnblogs.com/licheng/archive/2008/08/23/1274566.html 1         概述 本文档是针对Log4j日志工具的使用指南. ...

  4. Future 模式介绍

    假设一个任务执行需要花费一些时间,为了省去不必要的等待时间,可以先获取一个提货单,即future,然后继续处理别的任务,知道货物到达,即任务完成得到结果,此时可以使用提货单提货,即通过future得到 ...

  5. 使用MediaRecorder录制视频短片

    MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同.只是录制视频时不仅需要采集声音,还需要采集图像.为了让MediaRe ...

  6. js控制html元素的readonly属性

    html元素假设为只读,那么其readonly="readonly",我们现在想通过js来改变readonly属性为可以输入. 初始时,两个输入框都是只读.点击change按钮后, ...

  7. sql 查询强制使用HASH连接性能测试比较

    HASH JOIN 散列连接 hash join是CBO 做大数据集连接时的常用方式.优化器扫描小表(或数据源),利用连接键(也就是根据连接字段计算hash 值)在内存中建立hash表,然后扫描大表, ...

  8. 二分搜索法(转载自vanezkw)

    二分查找算法java实现 今天看了一下JDK里面的二分法是实现,觉得有点小问题.二分法的实现有多种今天就给大家分享两种.一种是递归方式的,一种是非递归方式的.先来看看一些基础的东西. 1.算法概念. ...

  9. my class 2.0

    www.dropbox.com www.google.com/voice www.prezi.com www.evernote.com

  10. php练习题:投票

    通过连接数据库,对数据库的增删改来实现一个投票的进行与结果的显示: 方法一: 主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...