zoukankan      html  css  js  c++  java
  • 2020-06-30 pol实现execl导入导出

    0.导入依赖

        <!-- 解析表格 -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.11</version>
            </dependency>
      <!-- 文件上传 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.4</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.6</version>
            </dependency>

    1.动态sql  (相当于批量添加)

     <insert id="addAll"  parameterType="region">
         insert  into bc_region (id,province,city,
         district,postcode,shortcode,citycode)
         values
           <foreach collection="list" item="region" separator=",">
            (#{region.id},#{region.province},
            #{region.city},#{region.district},#{region.postcode},#{region.shortcode},#{region.citycode}
            )
           </foreach>
     </insert>
    

    2.spring-mvc.xml配置

     <!-- 声明文件上传解析器 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 设置文件上传的最大大小(字节)的限制 -->
            <property name="maxUploadSize" value="104857600"/>
            <property name="maxInMemorySize" value="4096"/>
            <property name="defaultEncoding" value="UTF-8"/>
        </bean>
    

    3.controller

      导入(即上传)

      @RequestMapping("/uploadregion.do")
        public String  uplodRegion(MultipartFile myfile,HttpServletRequest request) throws IOException {
            //1.存储上传的文件
            //1.1通过myfile获得文件名称
            String oldname=myfile.getOriginalFilename();
            //1.2判断oldname中是否有路径部分,如果有进行截取
            if(oldname.indexOf("/")>-1){
                oldname = oldname.substring(oldname.lastIndexOf("/")+1);
            }
            String newname= UUID.randomUUID().toString()+"_"+oldname;
            //2.解析上传的文件,解析出数据
           String savepath= request.getServletContext().getRealPath("/")+"upload\";
            File file=new File(savepath);
            if(!file.isDirectory()){
                file.mkdir();
            }
            //3.根据解析出来的数据进行存储
            File savefile=new File(savepath,newname);
            try {
                myfile.transferTo(savefile);
            } catch (IOException e) {
                e.printStackTrace();
            }
            String filePath=savepath+newname;
            HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(filePath));
            HSSFSheet sheet=workbook.getSheetAt(0);//第一个工作簿
            int i=0;
            List<Region> regions=new ArrayList<>();
            Region region=null;
            for (Row cells : sheet) {
                if(i==0){
                    i=1;
                    continue;
                }
                region=new Region();
                String id=cells.getCell(0).getStringCellValue();
                String province=cells.getCell(1).getStringCellValue();
                String city=cells.getCell(2).getStringCellValue();
                String district=cells.getCell(3).getStringCellValue();
                String postcode=cells.getCell(4).getStringCellValue();
                province=province.substring(0,province.length()-1);
                city=city.substring(0,city.length()-1);
                district=district.substring(0,district.length()-1);
                String info=province+city+district;
                String[] headByString= PinYin4jUtils.getHeadByString(info);
                String shortcode=String.join("",headByString);
                //城市编码
                String citycode=PinYin4jUtils.hanziToPinyin(city,"");
                region.setId(id);
                region.setCity(city);
                region.setCitycode(citycode);
                region.setDistrict(district);
                region.setPostcode(postcode);
                region.setProvince(province);
                region.setShortcode(shortcode);
                regions.add(region);
            }
            regionService.addAll(regions);
            return null;
        }
    

     

       导出(即下载)

      @RequestMapping("/outregion.do")
        public void out(HttpServletRequest request, HttpServletResponse response) throws IOException {
            List<Region> list=regionService.findAll(null);
            HSSFWorkbook workbook=new HSSFWorkbook();
            HSSFSheet sheet=workbook.createSheet("分区数据");
            HSSFRow row=sheet.createRow(0);
            row.createCell(0).setCellValue("区域编号");
            row.createCell(1).setCellValue("省份");
            row.createCell(2).setCellValue("城市");
            row.createCell(3).setCellValue("区域");
            row.createCell(4).setCellValue("邮编");
            for (Region region:list){
                HSSFRow datarow=sheet.createRow(sheet.getLastRowNum()+1);
                datarow.createCell(0).setCellValue(region.getId());
                datarow.createCell(1).setCellValue(region.getProvince());
                datarow.createCell(2).setCellValue(region.getCity());
                datarow.createCell(3).setCellValue(region.getDistrict());
                datarow.createCell(4).setCellValue(region.getPostcode());
            }
            String filename="区域数据.xls";
            //请求类型
            String contentType=request.getSession().getServletContext().getMimeType(filename);
            //输出流
            ServletOutputStream out=response.getOutputStream();
            //响应类型
            response.setContentType(contentType);
            //获取用户代理
            String agent=request.getHeader("User-Agent");
            //使用工具类进行解析
            filename= FileUtils.encodeDownloadFilename(filename,agent);
            //设置头文件信息
            response.setHeader("content-disposition","attachment;filename="+filename);
            workbook.write(out);
        }
    

    4.前台 jsp

    	function doRedo(){
    		$("#button-import").upload({  //导入
    			action:"${pageContext.request.contextPath}/upload.action",
    			name:"myfile"
    		});
    	}
    
        function doExport(){  //导出
          location.href="${pageContext.request.contextPath}/outRegion.action"
        }
    
  • 相关阅读:
    单例模式
    抽象类的作用和应用场景
    java内部类的作用
    java多线程
    IO流--与properties集合配合使用
    IO流--序列化流与反序列化流
    8 个必备的PHP功能开发
    CSS3 box-shadow:
    移动平台的meta标签-----神奇的功效
    Android Screen Monitor抓取真机屏幕
  • 原文地址:https://www.cnblogs.com/chaoesha/p/13216395.html
Copyright © 2011-2022 走看看