EasyExcel结合业务开发文件上传操作数据

1.实体类
表单实体类(对应表单结构)
public class TbClueExcelVo{


    /** 客户手机号 手机号(11位手机号,不可有空格) */
    @ExcelProperty(value = "手机号(11位手机号,不可有空格)",index = 0)
    private String phone;

    /** 渠道 */
    @ExcelProperty(value = "渠道来源",index = 1)
    private String channel;
    
    /** 活动编号 (来源于活动列表8位字母或数字)*/
    @ExcelProperty(value = "活动编号(来源于活动列表8位字母或数字)",index = 2)
    private String activityCode;


    /** "客户姓名 **/
    @ExcelProperty(value = "客户姓名",index = 3)
    private String name;
    
    /** 意向学科 */
    @ExcelProperty(value = "意向学科",index = 4)
    private String subject;

    /** 意向级别 */
    @ExcelProperty(value = "意向级别",index = 5)
    private String level;
    
    /** 性别 */
    @ExcelProperty(value = "性别",index = 6)
    private String sex;

    /** 年龄 */
    @ExcelProperty(value = "年龄",index = 7)
    private Long age;
    
    /** 微信 */
    @ExcelProperty(value = "微信",index = 8)
    private String weixin;

    /** qq */
    @ExcelProperty(value = "QQ",index = 9)
    private String qq;}
成功失败实体类
public class ImportResultDTO {

    //成功数量
    private Integer successNum=0;

    //失败数量
    private Integer failureNum=0;
    
     public static ImportResultDTO error(){
        return new ImportResultDTO(0,1);
    }

    /**
     * 提供静态方法,发生成功的时候记录数据
     * @return
     */
    public static ImportResultDTO success(){
    
        return new ImportResultDTO(1,0);
    }

    /**
     * 该方法主要是将每次插入的结果与总的结果进行汇总时进行调用
     * @param data
     * @return
     */
    public ImportResultDTO addAll(ImportResultDTO data){
    
        this.failureNum += data.getFailureNum();
        this.successNum += data.getSuccessNum();
        return this;
    }
    
    }


2.controller层
public AjaxResult importData(MultipartFile file) throws Exception {


        /*自定义EasyExcel监听器,用于解析数据并执行操作  tbClueService业务的数据库操作接口*/
        ExcelListener excelListener = new ExcelListener(tbClueService);
        /*excel解析*/
        EasyExcel.read(file.getInputStream(), TbClueExcelVo.class, excelListener).sheet().doRead();

        return AjaxResult.success(excelListener.getResult());
    }
    
    
3.自定义EasyExcel监听器
@Component
public class ExcelListener extends AnalysisEventListener<TbClueExcelVo> {

    /**
     * 利用构造方法获取对应的service
     */
    @Autowired
    public ITbClueService clueService;


    /*成功和失败次数*/
    @Autowired
    private ImportResultDTO resultDTO;

    /**
     * 提供带参构造方法,在这里需要通过构造方法的方式获取对应的service层
     * 谁调用这个监听器谁提供需要的service
     *
     * @param clueService
     */
    public ExcelListener(ITbClueService clueService) {
        this.clueService = clueService;
        this.resultDTO = new ImportResultDTO();
    }

    /**
     * 每解析一行数据都要执行一次
     * 每条都执行一次插入操作
     *
     * @param data
     * @param context
     */
    @Override
    public void invoke(TbClueExcelVo data, AnalysisContext context) {
         /*解析一行执行业务层操作*/
        ImportResultDTO addTbClue = clueService.importCluesData(data);
        /*空指针异常*/
        ImportResultDTO importResultDTO = resultDTO.addAll(addTbClue);

    }

    /**
     * 当所有数据都解析完成后会执行
     *
     * @param context
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {

    }

    /**
     * 返回结果集对象
     *
     * @return
     */
    public ImportResultDTO getResult() {
        return resultDTO;
    }

}

4.业务层
 @Override
 public ImportResultDTO importCluesData(TbClueExcelVo data) {
        //===============校验线索数据,封装属性,插入数据库,根据规则进行分配======================
        
       
       //具体业务操作成功和失败
            return ImportResultDTO.error();
             return ImportResultDTO.success();

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20岁30年经验的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值