采用的是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. Hdu4349 Xiao Ming's Hope

    Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. JBoss像tomcat那样创建部署文件,JBoss创建虚拟目录

    jboss可以像tomcat那样,写一个配置文件,指向应用所在的路径,而不用将应用直接复制到deploy下的某一个以.war结尾的文件夹下吗? 答:好像是不能直接操作,但是可以通过变通的方式来搞定.在 ...

  3. VBA解密

    1.关闭要解密的excel文件,新建一个excel文件 2.打开新建的这个Excel,按下alt+F11,打开vb界面,新建一个模块,如图所示 3.将代码复制到这个模块中,代码如下:Private S ...

  4. java面向对象编程——第四章 类和对象

    OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...

  5. HookSSDT 通过HookOpenProcess函数阻止暴力枚举进程

    首先要知道Ring3层调用OpenProcess的流程 //当Ring3调用OpenProcess //1从自己的模块(.exe)的导入表中取值 //2Ntdll.dll模块的导出表中执行ZwOpen ...

  6. 模拟QQ侧滑控件 实现三种界面切换效果(知识点:回调机制,解析网络json数据,fragment用法等)。

    需要用到的lib包 :解析json  gson包,从网络地址解析json数据成String字符串的异步网络解析工具AsyncHttpClient等 下载地址:点击下载 Xlistview 下拉上拉第三 ...

  7. [JS]getYear()和getFullYear()方法区别

    getFullYear();总是返回4位完整的年份 getYear();当年份在1900-1999时,返回两位数字,如1980返回80,当不在这个范围时,返回同getFullYear(); 注:get ...

  8. Python的排序

    1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a','have','I' ...

  9. Rhel6-mailsystem配置文档

    (postfix+dovecot+mysql+extmail) 理论基础:

  10. ios 8.4 Xcode6.4 设置LaunchImage图片

    Step1 1.点击Image.xcassets 进入图片管理,然后右击,弹出"New Launch Image" 2.如图,右侧的勾选可以让你选择是否要对ipad,横屏,竖屏,以 ...