您的位置:首页 > 数据库

导入Execl表格到数据库

2016-12-07 09:54 113 查看
  在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);  

                  }

      
b69a
           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;

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: