在上一节的基础上,本文演示下如何导入excel数据。
Excel导入操作指导
- 继承ocean-easyexcel SDK,上一节打包生成
<dependency><groupId>com.angel.ocean</groupId><artifactId>ocean-easyexcel</artifactId><version>1.0.0</version>
</dependency>
- 定义Excel数据导入模型
package com.angel.ocean.domain.dto;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;/*** Excel导入数据结构样例*/
@Data
public class UserDataImportDTO {@ExcelProperty("用户名")private String username;@ExcelProperty("密码")private String password;@ExcelProperty("注册时间")private String createTime;
}
- 定义Excel数据导入业务类UserDataImportService,实现ExcelImportDataHandler,对导入数据进行处理
package com.angel.ocean.service;import com.angel.ocean.domain.dto.UserDataImportDTO;
import com.angel.ocean.excel.ExcelImportDataHandler;
import java.util.List;public class UserDataImportService implements ExcelImportDataHandler<UserDataImportDTO> {private UserService userService;public UserDataImportService(UserService userService) {this.userService = userService;}@Overridepublic void handler(List<UserDataImportDTO> data) {userService.excelImport(data);}
}
package com.angel.ocean.service;import com.alibaba.fastjson2.JSON;
import com.angel.ocean.domain.dto.UserDataImportDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;@Slf4j
@Service
public class UserService {public void excelImport(List<UserDataImportDTO> data) {log.info("{}", JSON.toJSONString(data));}
}
- 定义Excel数据导入业务接口
@PostMapping("import")
public ApiResult<?> importExcel(@RequestParam("file") MultipartFile file) throws IOException {InputStream inputStream = file.getInputStream();Integer sheetNo = 0;Integer headRowNumber = 1;ExcelImportDataHandler excelImportDataHandler = new UserDataImportService(userService);EasyExcelUtil.readExcel(excelImportDataHandler, inputStream, UserDataImportDTO.class, sheetNo, headRowNumber);return ApiResult.success();
}
Excel导入结果
需要导入Excel数据截图,总共16条数据:
Excel导入接口演示:
服务端导入数据打印信息,可以看出16条数据,分两批入库。