导入Execl表格到数据库

来源:互联网 发布:python爬取股票数据 编辑:程序博客网 时间:2024/05/18 21:11

  在spring配置文件中配置  XML

        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
            <property name="maxUploadSize" value="10000000" />
        </bean> 

  需要导入一个xmlbeans-2.3.0包


(一) html页面代码


       <div id="wenjian" style="float: left">
        <form id="form1" action="inputIllegalbaseData.html" method="post"  enctype="multipart/form-data">//用form表单post方法上传,定义enctype请求数据类型
        <input type="file" name="file"/>    //读取文件
        <input type="submit" id="tijiao" value="开始上传"/>      //定义一个上传按钮
        </form>    
        </div>


(二) 接受类


@RequestMapping(value="inputIllegalbaseData")    
@ResponseBody
public String inputIllegalbaseData(@RequestParam("file") CommonsMultipartFile  file){
    
    servise.inputIllegalbaseData(file);
    
    return null;
}


(三)服务类



定义一个接受方法

public String inputIllegalbaseData(CommonsMultipartFile file) {

        String myFileName = file.getOriginalFilename();  //读取文件名字
        int point = myFileName.lastIndexOf(".");
        String hzm = myFileName.substring(point);//解析后缀
         if(".xls.xlsx".indexOf(hzm) == -1) { //先判断文件是否是execl类型
             return "文件类型不是execl格式";
         }
          //重命名上传后的文件名  
          String path = request.getServletContext().getRealPath("upload") +"/" ; 

     myFileName=newName(myFileName);//重命名文件名

          File localFile = new File(path);
         if(!localFile.exists()){//如果文件路径不存在就创建一个
            localFile.mkdir();
       }
          File filea=new File(path,myFileName);//根据路径和文件名创新一个文件
    

         try {
             file.transferTo(filea);  //把文件写入tomcat临时路径下
    List<IllegalBasicData> list = getDataFromExcel(path+myFileName);  //调用下面的 方法,读取文件中的内容   

//注意:要先把文件读取出来临时存储后才能用poi读取文件

   } catch (Exception e) {
           // TODO Auto-generated catch block
        
            e.printStackTrace();
      }  
        


        return null;
        

    }
   

///poi读取临时路径下的文件

      public  List<IllegalBasicData> getDataFromExcel(String filePath)
            {
              FileInputStream fis =null;
              Workbook wookbook = null;
              
              List<IllegalBasicData> list = new ArrayList<IllegalBasicData>();
              try
              {
                //获取一个绝对地址的流
                  fis = new FileInputStream(new File(filePath));
                  if(filePath.endsWith(".xls"))//2003版本的excel,用.xls结尾
                  {
                      wookbook = new HSSFWorkbook(fis);  
                  }
                  else if (filePath.endsWith(".xlsx"))  //2007版本的excel,用.xlsx结尾
                  {
                      wookbook = new XSSFWorkbook(fis);//得到工作簿
                  }
                  
                  
              }
              catch(Exception e)
              {
                e.printStackTrace();
              }finally{
                  
                  try {
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    
                    e.printStackTrace();
                }
              }
            
            
                
              //得到一个工作表
               Sheet sheet = wookbook.getSheetAt(0);
              //获得表头
//               Row rowHead = sheet.getRow(0);
//              //判断表头是否正确
//              if(rowHead.getPhysicalNumberOfCells() != 2)
//              {
//                System.out.println("表头的数量不对!");
//              }
              //获得数据的总行数
              int totalRowNum = sheet.getLastRowNum();
              //要获得属性
              String name = "";
              String latitude = "";
               //获得所有数据
              for(int i = 2 ; i <= totalRowNum ; i++)
              {
                  IllegalBasicData ibd=new IllegalBasicData();
                //获得第i行对象
                Row row = sheet.getRow(i);
                //获得获得第i行第0列的 String类型对象
                 Cell cell = row.getCell((short)0);
                ibd.setJcardid(cell.getStringCellValue().toString().trim());
                
                cell = row.getCell((short)1);
                ibd.setUsername(cell.getStringCellValue().toString().trim());
                
                cell = row.getCell((short)2);
                ibd.setUcardid(cell.getStringCellValue().toString().trim());
                
                cell = row.getCell((short)3);
                ibd.setRegisterDomicie(cell.getStringCellValue().toString().trim());
               
                cell = row.getCell((short)4);
                ibd.setJtype(cell.getStringCellValue().toString().trim());

                cell = row.getCell((short)5);
                ibd.setFullMarkDate(cell.getStringCellValue().toString().trim());
                
                cell = row.getCell((short)6);
                ibd.setPhylExanDate(cell.getStringCellValue().toString().trim());
                
                cell = row.getCell((short)7);
                ibd.setScore(cell.getStringCellValue().toString().trim());
                
                cell = row.getCell((short)8);
                ibd.setState(cell.getStringCellValue().toString().trim());
                
                cell = row.getCell((short)9);
                ibd.setPhone(cell.getStringCellValue().toString().trim());
               
                cell = row.getCell((short)10);
                ibd.setAddress(cell.getStringCellValue().toString().trim());

                list.add(ibd);
              }
            return list;
            }





        /**
         * 重命名上传文件名
         *
         * @param srcName
         *            上传文件的文件名
         * @return 重命名后的文件名
         */
        public String newName(String srcName) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
            String ext = srcName.substring(srcName.lastIndexOf("."));//后缀
            String dt = sdf.format(new java.util.Date());
            String rd = Math.round(Math.random() * 900) + 100 + "";//随机数
//            return dt + rd +ext;//看不到原来的文件名字
            int wz=srcName.lastIndexOf(".");
           String mz="";
            if(wz==-1){
                mz=srcName;
            }else
            {
                mz=srcName.substring(0,wz);
            }
        
//            return dt + rd +ext;
            return mz+"_"+dt + rd +ext;
        }

1 0
原创粉丝点击