通過Excel表格批量匯入資料
阿新 • • 發佈:2022-05-20
業務場景
批量匯入使用者資料
實體類
/**
* Excel表格格式
*
* @author cwt
*/
@Data
public class ImportExcelFile {
/**
* 姓名
*/
private String name;
/**
* 賬號(手機號碼)
*/
private String mobile;
/**
* 密碼
*/
private String password;
}
/** * 使用者實體類 * * @author cwt */ @Data public class ImportExcelFile { /** * id */ private String id; /** * 姓名 */ private String name; /** * 賬號(手機號碼) */ private String mobile; /** * 密碼 */ private String password; }
控制層
@Resource private Service service; /** * 批量匯入Excel表格資料 * @param file * @return 響應體 * @author cwt * @date */ @RequestMapping(value = "/importExcel") public AjaxResult importExcel(MultipartFile file) throws IOException { service.importExcel(file); return AjaxResult.success(); }
服務層
public interface Service extends IService<User> {
/**
* 通過excel匯入使用者
*
* @param file
* @return java.lang.Boolean
* @author cwt
* @date
*/
Boolean importExcel(MultipartFile file) throws IOException;
}
服務實現類
@Service public class ServiceImpl extends ServiceImpl<UserMapper, User> implements Service { @Resource private UserMapper userMapper; @Override public Boolean importExcel(MultipartFile file) throws IOException { //獲取檔案輸入流 InputStream is = file.getInputStream(); //建立工作蒲用於讀取檔案資訊 ImportExcel importExcel = new ImportExcel(); //呼叫工作蒲中的方法讀取檔案資訊,此處使用stream流進行遍歷插入操作 List<Boolean> userList = importExcel.importDataFromExcel(is, file.getOriginalFilename()).stream.map(a -> { //原始型別為Object,進行型別強轉 ImportExcelFile userDto = (ImportExcelFile) a; User user = new User(); BeanUtils.copyBeanProp(user, userDto); user.setId(UUID.randomUUID().toString()) userMapper.insert(user); return true; }).collect(Collectors.toList()); return true; } }