1. 程式人生 > 其它 >通過Excel表格批量匯入資料

通過Excel表格批量匯入資料

業務場景

批量匯入使用者資料

實體類

/**
 * 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;
    }
}

效果