easyexcel导入,单个sheel与多个sheel

easyexcel导入

单个导入

实体:

@Data
public class TestExcel 
    /**
     * 收件人名称
     */
    @ExcelProperty(value = "收件人姓名(必填)")
    private String receiver;
    /**
     * 收件人手机号
     */
    @ExcelProperty(value = "收件人电话(必填)")
    private String phone;
    /**
     * 省份名称
     */
    @ExcelProperty(value = "省(必填)")
    private String proviceName;
    /**
     * 城市名称
     */
    @ExcelProperty(value = "市(必填)")
    private String cityName;
    /**
     * 区域名称
     */
    @ExcelProperty(value = "区(必填)")
    private String countryName;

}

controller:

@PostMapping("/testExcel22")
public Payload testExcel(FormData formData) {
    try {
        EasyExcel.read(formData.getFile().getInputStream(), TestExcel.class,new ExcelTestListener()).sheet().doRead();

    } catch (Exception e) {
        e.printStackTrace();
        throw new ApplicationException("excel解析失败");
    }
    return new Payload();
}

controller需要取数据:

@PostMapping("/testExcel22")
public Payload testExcel(FormData formData) {
    try {
   		ExcelTestListener excelTestListener = new ExcelTestListener();
        EasyExcel.read(formData.getFile().getInputStream(), TestExcel.class, excelTestListener ).sheet().doRead();
        //获取解析数据
		List<TestExcel> list = excelTestListener.getData();
    } catch (Exception e) {
        e.printStackTrace();
        throw new ApplicationException("excel解析失败");
    }
    return new Payload();
}

事件监听器:

public class ExcelTestListener extends AnalysisEventListener<TestExcel>  {

    private List<TestExcel> list = new ArrayList<>();

    @Override
    public void invoke(TestExcel testExcel , AnalysisContext analysisContext) {
        list.add(testExcel);
        System.out.println("list======"+JSON.toJSONString(list));
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

    public List<TestExcel> getData() {
        return list;
    }

}

多个

实体与监听器写法一致,controller:

@PostMapping("/testExcel22")
public Payload testExcel(FormData formData) {
    try {
        ExcelReader excelReader = EasyExcel.read(formData.getFile().getInputStream()).build();
        ExcelImportTestOneListener oneListener = new ExcelImportTestOneListener();
        ExcelImportTestTwoListener twoListener = new ExcelImportTestTwoListener();
        ReadSheet sheet1 = EasyExcel.readSheet(0).head(TestExcelOne.class).registerReadListener(oneListener).build();
        ReadSheet sheet2 = EasyExcel.readSheet(1).head(TestExcelTwo.class).registerReadListener(twoListener).build();
        excelReader.read(sheet1,sheet2);
        excelReader.finish();

		//解析数据
		List<TestExcelOne> oneList = oneListener.getData();
		List<TestExcelTwo> twoList = twoListener.getData();
		if(null != oneList && oneList size() > 2000){
		    throw new ApplicationException("导入失败,数量需小于2000条");
		}
    } catch (Exception e) {
        e.printStackTrace();
        throw new ApplicationException("excel解析失败");
    }
    return new Payload();
}

FormData实体

@Data
public class FormData {

    @JSONField(serialize = false)
    private MultipartFile file;

    private String name;

    private String filename;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值