@ApiOperation(value = "楼栋基本信息", notes = "需要登录。请求头携带Authorization字段")
@ApiImplicitParams({
@ApiImplicitParam(name = "excelFile", value = "excel文件", required = true, dataType = "int", paramType = "query")
})
@ApiResponses({
@ApiResponse(code = -1, message = "错误响应"),
@ApiResponse(code = 2000, message = "成功响应")
})
@PostMapping("/odsBulidingInfo")
public BaseResponse odsBulidingInfo(@RequestParam("excelFile") @ApiIgnore MultipartFile multipartfile) {
if(multipartfile==null){
return BaseResponse.error("没有上传文件");
}
if(multipartfile.isEmpty()){
return BaseResponse.error("上传文件是空");
}
try{
InputStream inputStream = multipartfile.getInputStream();
String fileType = CheckFileFormatUtil.getFileType(inputStream);
if(!StringUtils.equals(Constant.FileType.XLSX, fileType)){
return BaseResponse.error("只能上传xlsx类型文件");
}
ExcelTool.read(inputStream, OdsBulidingInfo.class, new InsertDB<OdsBulidingInfo>() {
@Override
public void save(List<OdsBulidingInfo> dataList){
for(OdsBulidingInfo item : dataList) {
item.setBuliding_info_id(IdTool.getIdForTable());
int ii = importExcelMapper.odsBulidingInfo(item);
}
}
});
}catch(Exception e){
throw new MyException(BaseResponse.error(e.getMessage()));
}
return BaseResponse.success();
}
上传Excel解析时报错:Convert excel format exception.You can try specifying the ‘excelType‘ yourself
原因是:因为在通过file获取的流类型,在EasyExcel.read读的时候,采用的同一个流,会导致excel类型出错。
解决方法:重新创建一个excel流,与获取文件流类型的流区别使用
InputStream inputStream = multipartfile.getInputStream();
String fileType = CheckFileFormatUtil.getFileType(multipartfile.getInputStream());