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

it2025-12-22  8

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; }
最新回复(0)