easyexcel import, single sheet and multiple sheets

easyexcel import

single import

entity:

@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();
}

The controller needs to get data:

@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();
}

Event listener:

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

}

multiple

Entities are written in the same way as listeners, 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 entity

@Data
public class FormData {
    
    

    @JSONField(serialize = false)
    private MultipartFile file;

    private String name;

    private String filename;

}

Guess you like

Origin blog.csdn.net/qq_16843563/article/details/132335641