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

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>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值