qq_264532115 2021-01-11 14:37 采纳率: 0%
浏览 24

文件上传解析内容!加q

boot+vue.

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

  • 写回答

1条回答 默认 最新

  • ~卑微的搬砖人~ 2023-04-06 10:47
    关注

    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;
        }
    
    评论

报告相同问题?