1、添加依赖:

        <!-- 现在已经更新到1.1.2-beta5 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>1.1.1</version>
        </dependency>    

导入:

2、添加监听:

package com.aikucun.goods.biz.easyexcel;

import com.aikucun.goods.dao.model.vo.SkuModel;
import com.aikucun.goods.dao.model.vo.SkuUploadFailModel;
import com.aikucun.sc.common.utils.BeanUtils;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

public class SkuUploadListener extends AnalysisEventListener {

    private List<SkuUploadFailModel> uploadFailList = Lists.newArrayList();

    private List<SkuModel> skuModelList = Lists.newArrayList();

    private int totalSize = 0;

    /**
     * 每解析一行,执行一次该方法
     */
    @Override
    public void invoke(Object object, AnalysisContext context) {
        totalSize++;
        SkuModel skuModel = (SkuModel) object;
        if (!checkData(skuModel)) {
            return;
        }
        skuModelList.add(skuModel);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {

    }

    private boolean checkData(SkuModel skuModel) {

        // 失败原因
        String failMessage = "";
        // itemCode
        String itemCode = skuModel.getItemCode();

        if (null == skuModel) {
            failMessage = "数据为空";
        }
        // 验证sku
        if (StringUtils.isEmpty(itemCode)) {
            failMessage = "itemCode为空!";
        } else {
            if (skuModelList.contains(itemCode)) {
                failMessage = failMessage + "itemCode重复!";
            }
        }
        //品牌名称
        if (StringUtils.isEmpty(skuModel.getBrandName())) {
            failMessage = failMessage + "品牌名称为空!";
        }
        //条码必填
        if (StringUtils.isEmpty(skuModel.getBarCode())) {
            failMessage = failMessage + "条码为空!";
        }

        if (StringUtils.isNotEmpty(failMessage)) {
            SkuUploadFailModel failModel = new SkuUploadFailModel();
            //数量校验???
            BeanUtils.convert(skuModel, failModel);
            failModel.setFailMessage(failMessage);

            uploadFailList.add(failModel);
            return false;
        }
        return true;

    }

    public List<SkuUploadFailModel> getUploadFailList(){
        return uploadFailList;
    }

    public List<SkuModel> getSkuModelList(){
        return skuModelList;
    }

    public int getTotalSize() {
        return totalSize;
    }
}
View Code

相关文章: