文件上传解析内容!加q

boot+vue.

Excel,Jason,xml,CSV格式上传并解析文件内容保存到数据库。并且页面显示解析的内容

1、Vue+Element UI上传组件上传文件

<el-upload
                drag
                ref="upload"
                class="upload-demo"
                :action="uploadDatasetUrl"//后端响应地址
                :on-success='upLoadSuccess'//成功后的回调函数
                :file-list="fileList"
        >
            <i class="el-icon-upload"></i>
            <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
        </el-upload>
        // 上传原始数据后,上传成功的回调函数 放在methods中
            upLoadSuccess(response, file, fileList)
            {
                if (file != null) {
                    if (response.code !=0) {
                        console.log(response.code+response+file)
                        // 响应码不为0时,标识后台上传文件出错啦
                        file.status = 'error'
                        let fileName = file.name
                        file.name = file.name + '---上传失败'
                        this.$message({
                            type: 'error', message: fileName + '上传失败'
                        })
                    } else {
                        file.name = file.name + '---上传成功'
                    }
                }
            }

2、后端接收请求解析并入库

 @RequestMapping(value = "/uploadFile",method = RequestMethod.POST)
    @ApiOperation(value = "处理上传文件", notes = "处理上传文件", produces = MediaType.APPLICATION_JSON_VALUE)
    public JsonResult<Void> save(@RequestParam("file") MultipartFile multipartFile) throws Exception  {
        File file = null;
        file = File.createTempFile("tmp", null);
        file.deleteOnExit();
        if(multipartFile.getOriginalFilename().endsWith(".txt")){
            BufferedReader reader = null;
            String temp = null;
            try {
                multipartFile.transferTo(file); //MultipartFile转File
                reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));//解决服务器上乱码
                reader.readLine();
                while ((temp = reader.readLine()) != null) {
                    YdywHourEntity ydywHourEntity = new YdywHourEntity();
                    String[] s = temp.split(",");
                    ydywHourEntity.setYh2g(s[0]);
                    ydywHourEntity.setYh4g(s[1]);
                    ydywHourService.save(ydywHourEntity);
                }
            }catch (Exception e){
                e.printStackTrace();
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        else if(multipartFile.getOriginalFilename().endsWith(".csv")){
            System.out.println(multipartFile.getOriginalFilename());
            BufferedReader reader = null;
            String temp = null;
            try {
                multipartFile.transferTo(file); //MultipartFile转File
                reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK"));//解决服务器上乱码
                reader.readLine();
                while ((temp = reader.readLine()) != null) {
                    YdywHourEntity ydywHourEntity = new YdywHourEntity();
                    String[] s = temp.split(",");
                    ydywHourEntity.setYh2g(s[0]);
                    ydywHourEntity.setYh4g(s[1]);
                    ydywHourEntity.setYhVolte(s[2]);
                    ydywHourService.save(ydywHourEntity);
                }
            }catch (Exception e){
                e.printStackTrace();
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }else if(multipartFile.getOriginalFilename().endsWith(".xlsx")){
            System.out.println(multipartFile.getInputStream());
            List<YdywHourTemplate> ydywHourEntityList = ExcelUtils.importData(multipartFile, YdywHourTemplate.class);
            System.out.println(ydywHourEntityList.toString());
            if (ydywHourEntityList == null || ydywHourEntityList.size() == 0) {
                throw new EIPException("导入失败,导入数据错误");
            }
            for(YdywHourTemplate ydywHourTemplate:ydywHourEntityList){
                try{
                    YdywHourEntity ydywHourEntity = new YdywHourEntity();
                    BeanUtils.copyProperties(ydywHourEntity, ydywHourTemplate);
                    ydywHourEntity.setCjsj((new Date()));
                    ydywHourService.save(ydywHourEntity);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
        logger.info("处理上传文件");
        return JsonResult.ok();
    }

到出excel的工具类方法:此时的excel的有标题行和头行

    public static <T> List<T> importData(MultipartFile file, Class<T> clazz) {
        ImportParams params = new ImportParams();
        params.setTitleRows(1);
        params.setHeadRows(1);
        params.setNeedVerify(true);
        params.setVerifyGroup(new Class[]{AddGroup.class});
        List<T> templateUserList = null;
        try {
            templateUserList = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
        } catch (Exception e) {
            e.printStackTrace();
            throw new EIPException("导入失败,请确定数据格式是否正确");
        }
        return templateUserList;
    }