采用的是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. 表单重置reset

    最近一直在做各种页面的“增删改查”,只是在做新增功能的时候,自己一直在使用 reset来清空form表单,原以为这样子的清空方法是万无一失的,可惜最终还是在进行“修改”操作完了之后再“新增”的时候,就 ...

  2. Android TextView标签的显示

    在默认情况下,如果一个TextView中的文字太多,会跨行显示, 通过下面两个参数的设置,可以使TextView固定显示一行,未显示完成的后面用...... android:maxLines=&quo ...

  3. weblogic部署ssh2应用出现异常

    一般在domains\your_Domain\bin\startWebLogic.cmd 中找到set CLASSPATH=%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH ...

  4. (转)虚拟机的桥接模式和NAT模式区别

    不管是虚拟机的桥接还是NAT都是占用实机网络的.只不过两种方式有些差异,在通过IP或者拨号连接限速的网络中,差异就很明显了     举个不太恰当但简单的例子,一个百兆的网卡你可以把它想象成一个100车 ...

  5. 读懂diff

    作者: 阮一峰 日期: 2012年8月29日 diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前 ...

  6. java之io之file类的常用操作

    java io 中,file类是必须掌握的.它的常用api用法见实例. package com.westward.io; import java.io.File; import java.io.IOE ...

  7. hdu 4604 Deque

    http://acm.hdu.edu.cn/showproblem.php?pid=4604 将原数组根据其大小关系处理后 使其大小全在10^5内 处理后为 a1,a2,a3.....an 最优deq ...

  8. move

    <span id="span{{$index}}" ng-click="goTab({{$index}})" ng-class="{tabFon ...

  9. Oracle ODP.NET 篇

    1.C# 使用 System.Data.OracleClient 连接 Oracle 需要安装 instantclient , 并配置相应环境变量.重启,方可使用. 2. 使用 System.Data ...

  10. Hibernate 错误处理

    1. 在处理映射 1 对 n 时,Customer类为 1, Order类为 n,对象关系映射文件中没有错误,<many to one> 也正确,表名通类名. 但是,在执行插入时,发生两个 ...