POI读取excel2007文件的数据,插入数据库的使用方法【经验之谈】

       本人在公司的一个项目中需要把excel中的数据直接插入到数据库,找了很多种解决方案,包括jxl,但是据说jxl.jar 不支持07版本,所以就这条路走不通了;

       于是就转到了POI,同样的也找了很多文章,但多半的从别人那里copy或者转过来的,都不完善或者说代码是错误 的,无奈找到了个比较靠谱的文章通读了一遍,然后根据自己的需求对代码进行了修改,得到下列 的代码,才把这事才解决了,现在一看这段代码,其实还是慢简单的,只是自己没接触过,一开始会有点迷茫。。

好了,不废话了。。 直入正题了。。

所需的POI  包 :

JAR包下载地址:http://poi.apache.org/

后台代码,我是直接全部在action里面写的,这个就不多说了,直接上代码,相信大家都能看得懂的:


//导入
    public String executeExcel() throws Exception{ 
        String realPath = ServletActionContext.getServletContext().getRealPath("/fileupload");
        System.out.println(fileFileName);
        String filePath = "";
        if(this.file!=null){ 
            File saveFile = new File(new File(realPath),this.fileFileName); 
            filePath = realPath+"\\"+this.fileFileName;
            System.out.println(filePath);
            if(!saveFile.getParentFile().exists()){
             saveFile.getParentFile().mkdirs(); 
            }
            FileUtils.copyFile(file, saveFile); 
        }
        this.exlToDB(filePath);
        ActionContext.getContext().put("message","导入成功");
        return "success"; 
    }
   
   
    //读取excel2007,并把数据插入数据库
     public void exlToDB(String filePath){
         boolean flag = true;
         AllKpi akpi = new AllKpi();
         try {
         // 文件流指向excel文件
            FileInputStream fin=new FileInputStream(filePath);
            XSSFWorkbook workbook = new XSSFWorkbook(fin);// 创建工作薄
            XSSFSheet sheet = workbook.getSheetAt(0);// 得到工作表
            XSSFRow row = null;// 对应excel的行
            XSSFCell cell = null;// 对应excel的列
   
            int totalRow = sheet.getLastRowNum();// 得到excel的总记录条数
            System.out.println(totalRow);
            // 以下的字段一一对应数据库表的字段
            float idd = 0.0f;
            String id = "";
            String Name = "";
            String DEPT_NAME = "";
            String Weight = "";
            String ALGORITHM = "";
            String text = "  ";

            //String sql = "insert into DSP_TJ_KPI values(DSP_TJ_KPI_SEQ.nextval,?,?,?,'无',?)";

            for (int i = 1; i <= totalRow; i++) {
                row = sheet.getRow(i);
                //System.out.println(row.getCell(0).toString());
                if(row.getCell(0) != null && !"".equals(row.getCell(0)) && row.getCell(1) != null && !"".equals(row.getCell(1)) && row.getCell(2) != null && !"".equals(row.getCell(2)) && row.getCell(3) != null && !"".equals(row.getCell(3))){
                cell = row.getCell((short) 0);
                Name = cell.toString();
                System.out.println(Name);
                cell = row.getCell((short) 1);
                Weight = cell.toString();
                System.out.println(Weight);
     
                cell = row.getCell((short) 2);
                DEPT_NAME = cell.toString();
                System.out.println(DEPT_NAME);
                cell = row.getCell((short) 3);
                ALGORITHM = cell.toString();
                System.out.println(ALGORITHM);
     
                akpi.setAllkpiName(Name);
                akpi.setAllkpiDeptName(DEPT_NAME);
                akpi.setAllkpiWeight(Weight);
                akpi.setAlgorithm(ALGORITHM);
                akpi.setText(text);
                allKpiService.addAllKpi(akpi);
                //以下注释代码为连接jdbc测试代码块
                /*pst = con.prepareStatement(sql);
                //pst.setString(1, student_id);
                pst.setString(1, DEPT_NAME);
                pst.setString(2, Name);
                pst.setString(3, Weight);
                pst.setString(4, ALGORITHM);
                pst.execute();*/
                  System.out.println("preparestatement successful");
     }
   }
            /*pst.close();
            con.close();*/
            fin.close();
   } catch (FileNotFoundException e) {
            flag = false;
            e.printStackTrace();
   } catch (IOException ex) {
            flag = false;
            ex.printStackTrace();
   }
  
 }

        我这是全部在一个action类下面的。  所以services 里面的东西得自己先写好,这个我就不多说了。。  大家应该都懂!!呵呵。。  

   希望能帮助到那些需要用到操作excel的码农们!!

转载请贴出文章出处:http://my.oschina.net/hackenhu/blog/96836

你可能感兴趣的:(poi;excel)