一、依赖
<easyexcel.version>3.3.4</easyexcel.version>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
二、编写接口
/**
* 从Excel导入字段标准列表
*/
@ApiOperation("从Excel导入字段标准列表")
@RequestMapping(value = "/import", method = RequestMethod.POST)
public HttpResultVO<String> importMemberList(@RequestParam("file") MultipartFile file,
@RequestParam("importStrategy") String importStrategy)
throws IOException {
List<ColumnStandardImportDTO> list = EasyExcel.read(file.getInputStream())
.head(ColumnStandardImportDTO.class)
.sheet(0)
.doReadSync();
// dataGovColumnStandardService.importData(list, importStrategy);
// 将结果生成excel文件
//创建一个流,等待写入excel文件内容
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//将excel文件写入byteArrayOutputStream中
EasyExcel.write(byteArrayOutputStream, ColumnStandardImportDTO.class)
.sheet("字段标准").doWrite(list);
//创建inputStream流
InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
// 将结果excel文件存到minio上
try {
String fileName = file.getOriginalFilename();
String[] fileNameArray = fileName.split("\\.");
String filePrefix = fileNameArray[fileNameArray.length-1];
// 原文件名
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
String sb = "/data-gov/columnStandard/"+date.split("-")[0]+"/"
+date.split("-")[1]+"/"
+date.split("-")[2]+"/"
+ UUID.randomUUID().toString().replaceAll("-","")
+ filePrefix;
myMinioClient.getInstance().putObject(
PutObjectArgs.builder()
.bucket(minioConfig.getBucket()) // 桶名称
.object(sb) // 文件存储名称
.stream(inputStream, byteArrayOutputStream.size(), -1)
.contentType(file.getContentType())
.build());
String excelUrl = minioConfig.getEndpoint() + "/" + minioConfig.getBucket() + "/" + sb;
return HttpResultVO.success(excelUrl);
} catch (Exception e) {
log.error("Error occurred: " , e);
AssertUtil.throwException(true, "excel上传失败!");
}
return HttpResultVO.error("导入失败");
}