springboot+vue 解析txt csv excel 文件并存入数据库

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;
    }
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值