现象:
springBoot项目导入excel文件
方法:
1:引入jar
2:MultipartFile excelFile 对象接收excel文件导入
excelFile 常用方法:
String getContentType()//获取文件MIME类型
InputStream getInputStream()//后去文件流
String getName() //获取表单中文件组件的名字
String getOriginalFilename() //获取上传文件的原名
long getSize() //获取文件的字节大小,单位byte
boolean isEmpty() //是否为空
void transferTo(File dest) //保存到一个目标文件中。
3:校验文件
public String importSettleExcel(MultipartFile excelFile, @RequestHeader("token") String token,String bookId){
if(StringUtils.isBlank(bookId)){
throw new ServiceException(ErrorCodeEnum.ERRPR_INPUT) ;
}
JSONObject jsonObject = checkImport(excelFile);
try {
StringBuilder message = new StringBuilder();
InputStream is = excelFile.getInputStream();
List<receiptSettleModel> bankSeqSettlelist = ExcelUtils.getInstance().readExcel2Objects(is, receiptSettleModel.class, 0, 50000, 0);
int i = 2 ;
for (receiptSettleModel bankSeqModel : bankSeqSettlelist){
log.debug(bankSeqModel.toString());
try {
this.receiptBookService.importSettleExcel(bookId,bankSeqModel,token);
} catch (ServiceException se){
log.error("导入失败数据:",se);
message.append("第").append(i).append("行导入失败:").append(se.getMessage());
}
i++;
}
if (message.length()>0){
jsonObject.put("code", SysContants.REST_RTN_CODE_FAIL) ;
jsonObject.put("message", message.toString());
}
} catch (Exception e) {
e.printStackTrace();
jsonObject.put("code", SysContants.REST_RTN_CODE_FAIL) ;
jsonObject.put("message", "导入失败");
}
return jsonObject.toJSONString();
}
public JSONObject checkImport(MultipartFile excelFile) {
if (excelFile==null){
throw new HttpReqException(ErrorCodeEnum.ERRPR_INPUT);
}
String filename = excelFile.getOriginalFilename() ;
if (filename==null){
throw new HttpReqException(ErrorCodeEnum.ERRPR_INPUT);
}
String postfix = filename.substring(filename.lastIndexOf(".")).toLowerCase();
if((!".xls".equals(postfix) && !".xlsx".equals(postfix)) || excelFile.getSize()>1024*1024*50){
throw new HttpReqException(ErrorCodeEnum.ERROR_FILE);
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", SysContants.REST_RTN_CODE_SUCCESS) ;
jsonObject.put("message", "导入成功");
return jsonObject;
}