1.导入的excel文档里面的数据
@RequestMapping(value = "import")
public Response importIndicatorBuilding(@RequestParam("file") MultipartFile file) throws IOException {
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
reader.addHeaderAlias("参数1","indicatorName");
reader.addHeaderAlias("参数2","indicatorCode");
reader.addHeaderAlias("参数3","landAreaName");
reader.addHeaderAlias("参数4","projectName");
reader.addHeaderAlias("参数5","planStageName");
reader.addHeaderAlias("参数6","buildingName");
ProjectsMdmprojectinfoDto param = new ProjectsMdmprojectinfoDto();
List<IndicatorBuildingDto> studentList = reader.readAll(IndicatorBuildingDto.class);
try {
this.preCheckData(studentList);
}catch (RuntimeException rx){
log.error("导入异常,{}", rx);
}catch (Exception e){
log.error("导入异常,{}", e);
}
return Response.success();
}
2.导出excel
@PostMapping(value ="/export",produces = "application/json;charset=UTF-8")
public Response export(@RequestParam(value = "current", defaultValue = "1") @ApiParam(value = "页码,从1开始") long current,
@RequestParam(value = "size", defaultValue = "20") @ApiParam(value = "行数") long size,
@RequestBody IndicatorBuilding indicatorBuilding ) {
Map<String,String> result = new HashMap<>();
IPage<IndicatorBuilding> page = new Page<>(current, size);
QueryWrapper<IndicatorBuilding> wrapper = new QueryWrapper<>();
wrapper.eq("status", "1" );
if (StringUtils.isNotEmpty(indicatorBuilding.getIndicatorName())){
wrapper.eq("indicator_name",indicatorBuilding.getIndicatorName());
}
if (StringUtils.isNotEmpty(indicatorBuilding.getIndicatorCode())){
wrapper.eq("indicator_code",indicatorBuilding.getIndicatorCode());
}
wrapper.lambda().orderByDesc(IndicatorBuilding::getCreateTime);
indicatorBuildingService.page(page,wrapper);
List<IndicatorBuilding> records = page.getRecords();
List<IndicatorBuildingDto> dtoList = new ArrayList<>();
records.stream().forEach( p ->{
IndicatorBuildingDto dto = new IndicatorBuildingDto();
BeanUtil.copyProperties(p,dto);
dtoList.add(dto);
});
ExcelWriter writer = ExcelUtil.getWriter();
writer.addHeaderAlias("indicatorName","参数1");
writer.addHeaderAlias("indicatorCode","参数2");
writer.addHeaderAlias("landAreaName","参数3");
writer.addHeaderAlias("projectName","参数4");
writer.addHeaderAlias("planStageName","参数5");
writer.addHeaderAlias("buildingName","参数6");
writer.autoSizeColumn(5);
writer.write(dtoList, true);
try {
//生成excel
String fileId = UUID.randomUUID().toString().toUpperCase().replaceAll("-", "");
DateFormat df = new SimpleDateFormat("yyyyMMdd");
Date now = new Date();
String dateStr = df.format(now);
String path = "/excel/tmp/" + dateStr + "/" + fileId + ".xlsx";
File file = FileUtil.createFile(path, absolutePath);
OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
writer.flush(os, true);
os.flush();
CofUploadFile cofUploadFile = new CofUploadFile();
cofUploadFile.setFileId(fileId);
String fileName = "表名"+".xlsx";
cofUploadFile.setFileName(fileName);
cofUploadFile.setFilePath(file.getAbsolutePath());
cofUploadFile.setFileSize(file.length());
cofUploadFile.setFileContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
cofUploadFile.setSaveType("1");
uploadFileService.saveFile(cofUploadFile);
result.put("fileId", fileId);
} catch (IOException e) {
log.error("导出异常:{}",e);
} finally {
writer.close();
}
return Response.success(result);
}