欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中Excel导入,下载模板,附带前端展示

程序员文章站 2022-06-19 14:45:28
java中Excel导入,下载模板,附带前端展示后台下载模板代码 /** * 多个模板下载 */ @RequestMapping(value = "/downloadExcel", method = RequestMethod.GET) @ResponseBody public void downloadExcel(HttpServletRequest request,HttpServletResponse response,String type) {...

java中Excel导入,下载模板,附带前端展示

后台下载模板代码

    /**
     * 多个模板下载
     */
    @RequestMapping(value = "/downloadExcel", method = RequestMethod.GET)
    @ResponseBody
    public void downloadExcel(HttpServletRequest request,HttpServletResponse response,String type) {
        try {

            //获取要下载的模板名称
            String fileName = "";
            if("solidWaste".equals(type)){
                fileName = "模板名称.xlsx";
            }else if("buildTrash".equals(type)){
                fileName = "模板名称.xlsx";
            }else if("lifeTrash".equals(type)){
                fileName = "模板名称.xlsx";
            }else if("recycLing".equals(type)){
                fileName = "模板名称.xlsx";
            }
            ExcelUtils.downloadExcel(request,response,fileName);
            //return Response.ok("应用导入模板下载完成");
        } catch (Exception ex) {
            logger.error("getApplicationTemplate :", ex);
            //return Response.ok("应用导入模板下载失败!");
        }

    }

vue前端调用方法

<el-button type="primary" @click="downloadExcel()">下载Excel模板</el-button>

      downloadExcel () {
        window.location.href = this.$http.adornUrl('接口名称?type=参数类型')
      },

后台导入Excel controller层

    /**
     * 导入Excel
     * @param file
     * @param session
     * @return
     * @throws
     */
    @RequestMapping(value = "/importExcel",method = RequestMethod.POST)
    public R importExcel(@RequestParam("file") MultipartFile file, HttpSession session) throws IOException {
        InputStream inputStream = null;
        R result = new R();
        try {
            //获取最后一个.的位置
            int lastIndexOf = file.getOriginalFilename().lastIndexOf(".");
            //获取文件的后缀名 .jpg
            String suffix = file.getOriginalFilename().substring(lastIndexOf);
            if(!suffix.equals(".xlsx") && !suffix.equals(".xls")){
                result.put("code", Constant.SERVER_ERROR);//服务端错误 500
                result.put("msg","上传文件格式错误,请检查重新上传!");
                return result;
            }
            inputStream = file.getInputStream();
            Workbook wb = WorkbookFactory.create(inputStream);
            Long userId = getUserId();
            Map<String,Object> res = dataSolidWasteService.importExcelData(wb,session,userId);
            result.put("code",res.get("code"));
            result.put("msg",res.get("msg"));
            return result;
        }catch (Exception e){
            e.printStackTrace();

            result.put("code",Constant.SERVER_ERROR);//服务端错误 500
            result.put("msg","导入数据异常,请联系管理员!");
            return result;
        }
    }

后台导入Excel 业务处理层

    /**
     * 读取Excel文件中的值并导入
     * @param wb
     * @param session
     * @return 导入成功返回200,失败则返回对应的原因
     */
    @Override
    public Map<String,Object> importExcelData(Workbook wb, HttpSession session, Long userId){

        List<Map<String,Object>> resList = new ArrayList<>();

        Sheet sheet = wb.getSheetAt(0);

        Map<String,Object> map = new HashMap<>();

        List<DataSolidWasteEntity> addList = new ArrayList<>(); //保存信息集合
		//自己封装的工具类  设置一些参数之类的
        int index = ExcelUtils.getExcelRealRow(sheet);//有效行数

        if(index == 0){
            map.put("code", Constant.EXCEL_CHECK_NULL);//服务端错误 52001
            map.put("msg","导入的记录行数不能为0,请确认后再操作!");
            return map;
        }
        if(sheet.getRow(0).getCell(0) != null){
            //设置String类型
            sheet.getRow(0).getCell(0).setCellType(Cell.CELL_TYPE_STRING);
            String name1 = sheet.getRow(0).getCell(0).getStringCellValue().replaceAll(" +","");
            String name2 = sheet.getRow(0).getCell(1).getStringCellValue().replaceAll(" +","");
            String name3 = sheet.getRow(0).getCell(2).getStringCellValue().replaceAll(" +","");
            String name4 = sheet.getRow(0).getCell(3).getStringCellValue().replaceAll(" +","");
            String name5 = sheet.getRow(0).getCell(4).getStringCellValue().replaceAll(" +","");
            String name6 = sheet.getRow(0).getCell(5).getStringCellValue().replaceAll(" +","");
            String name7 = sheet.getRow(0).getCell(6).getStringCellValue().replaceAll(" +","");

            if(!"统计月份".equals(name1) || !"区县".equals(name2) || !"企业名称".equals(name3)
                    || !"固废种类".equals(name4)
                    || !"利用技术".equals(name5) || !"处置利用量".equals(name6)
                    || !"主要产品及产量".equals(name7)
            ){

                map.put("code",Constant.EXCEL_CHECK_NULL);//服务端错误 52001
                map.put("msg","表头列名错误!");
                return map;
            }

        }

        //循环每一行
        for(int i = 1;i<index+1;i++){
            //循环第i行
            if(sheet.getRow(i) != null){
            //表格实体类 根据自己的需求加入
                DataSolidWasteEntity dre = new DataSolidWasteEntity();
                //第一列统计月份
                if(sheet.getRow(i).getCell(0) != null){
                    //设置String类型
                    sheet.getRow(i).getCell(0).setCellType(Cell.CELL_TYPE_STRING);
                    if(!"".equals(sheet.getRow(i).getCell(0).getStringCellValue().trim())){
                        String statisticsMonth = sheet.getRow(i).getCell(0).getStringCellValue().trim();
                        dre.setStatisticsMonth(statisticsMonth);
                    }
                }
                //第二列区县
                if(sheet.getRow(i).getCell(1) != null){
                    //设置String类型
                    sheet.getRow(i).getCell(1).setCellType(Cell.CELL_TYPE_STRING);
                    if(!"".equals(sheet.getRow(i).getCell(1).getStringCellValue().trim())){
                        String countyName = sheet.getRow(i).getCell(1).getStringCellValue().trim();
                        dre.setCountyName(countyName);
                    }
                }
                //第三列企业单位
                if(sheet.getRow(i).getCell(2) != null){
                    //设置String类型
                    sheet.getRow(i).getCell(2).setCellType(Cell.CELL_TYPE_STRING);
                    if(!"".equals(sheet.getRow(i).getCell(2).getStringCellValue().trim())){
                        String receiveCompany = sheet.getRow(i).getCell(2).getStringCellValue().trim();
                        dre.setReceiveCompany(receiveCompany);
                    }
                }
                //第四列固废类别
                if(sheet.getRow(i).getCell(3) != null){
                    //设置String类型
                    sheet.getRow(i).getCell(3).setCellType(Cell.CELL_TYPE_STRING);
                    if(!"".equals(sheet.getRow(i).getCell(3).getStringCellValue().trim())){
                        String trashType = sheet.getRow(i).getCell(3).getStringCellValue().trim();
                        dre.setTrashType(trashType);
                    }
                }
                //第五列利用技术
                if(sheet.getRow(i).getCell(4) != null){
                    //设置String类型
                    sheet.getRow(i).getCell(4).setCellType(Cell.CELL_TYPE_STRING);
                    if(!"".equals(sheet.getRow(i).getCell(4).getStringCellValue().trim())){
                        String usedUtilize = sheet.getRow(i).getCell(4).getStringCellValue().trim();
                        dre.setUsedUtilize(usedUtilize);
                    }
                }
                //第六列处置利用量
                if(sheet.getRow(i).getCell(5) != null){
                    //设置String类型
                    sheet.getRow(i).getCell(5).setCellType(Cell.CELL_TYPE_STRING);
                    if(!"".equals(sheet.getRow(i).getCell(5).getStringCellValue().trim())){
                        String usedUtilizeNum = sheet.getRow(i).getCell(5).getStringCellValue().trim();
                        dre.setUsedUtilizeNum(usedUtilizeNum);
                    }
                }
                //第七列主要产品(多个用分号隔开)
                if(sheet.getRow(i).getCell(6) != null){
                    //设置String类型
                    sheet.getRow(i).getCell(6).setCellType(Cell.CELL_TYPE_STRING);
                    if(!"".equals(sheet.getRow(i).getCell(6).getStringCellValue().trim())){
                        String mainProductNum = sheet.getRow(i).getCell(6).getStringCellValue().trim();
                        dre.setMainProductNum(mainProductNum);
                    }
                }

                dre.setCreatedBy(userId);
                dre.setCreatedTime(new Date());
                dre.setUpdatedBy(userId);
                dre.setUpdatedTime(new Date());
                addList.add(dre);
            }else {
                continue;
            }
        }

        //插入数据
        if(addList.size() > 0){
            try {
                dataSolidWasteDao.insertBatch(addList);
                map.put("code",Constant.TOKEN_CHECK_SUCCESS);//成功 0
                map.put("msg","导入成功!");
                resList.add(map);
            }catch (Exception e){
                e.printStackTrace();
                map.put("code",Constant.SERVER_ERROR);//服务端错误 50000
                map.put("msg","导入数据异常,请联系管理员!");
                resList.add(map);
                return map;
            }
        }
        return map;
    }

vue前端调用

        <el-upload class="upload-demo import"
           :action="后台接口"
           accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
            :show-file-list="false"
           :before-upload="beforeAvatarUpload"
           :on-progress="uploading"
           name="file"
           :http-request="importExcel"
           multiple
        >
          <el-button type="success">导入</el-button>
        </el-upload>

本文地址:https://blog.csdn.net/weixin_44378416/article/details/112005355

相关标签: java vue