美文网首页
EasyExcel读取规则excel文件

EasyExcel读取规则excel文件

作者: snapshot | 来源:发表于2020-03-10 11:12 被阅读0次

1. 依赖引入:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.1.6</version>
        </dependency>

2. excel映射实体类:

@Data
public class ExcelHeader implements Serializable {

    @ExcelProperty(value = "字段1")
    private String field1;
   
    @ExcelIgnore
    private String field2;

}

(1)@ExcelProperty可以指定列位置,也可以指定列的名称;
(2)对于不需要映射的字段,使用@ExcelIgnore注解

3. 监听器:

public class TestExcelListener extends AnalysisEventListener<ExcelHeader> {

    private ExcelReader reader;
    //装载解析的结果
    List<ExcelHeader> internalAccounts = new ArrayList<>(100);

    public TestExcelListener(InputStream inputStream) {
        this.reader = EasyExcelFactory.read()
                .autoCloseStream(true)
                .autoTrim(true)
                .registerReadListener(this)
                .head(ExcelHeader.class)
                .file(inputStream)
                .ignoreEmptyRow(true)
                .headRowNumber(7)
                .build();
        this.reader.read(new ReadSheet(0));
    }

    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        if (MapUtils.isEmpty(headMap)) {
            throw new ExcelAnalysisException("未找到列");
        }
    }

    @Override
    public void invoke(ExcelHeader data, AnalysisContext context) {        
        internalAccounts.add(data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
    }

    public List<ExcelHeader> closeAndGetData() {
        reader.finish();
        return internalAccounts;
    }
}

4. controller调用:

@RestController
@RequestMapping("/api/excel")
public class ExcelParseController {

    @PostMapping(value = "/parse", produces = MediaType.APPLICATION_JSON_VALUE)
    public List<ExcelHeader>spvFileUpload(@RequestParam("file") MultipartFile file) throws Exception{

        TestExcelListener listener = new TestExcelListener(file.getInputStream());
        List<ExcelHeader> internalAccounts = listener.closeAndGetData();
        return internalAccounts;
    }

}

相关文章

网友评论

      本文标题:EasyExcel读取规则excel文件

      本文链接:https://www.haomeiwen.com/subject/gboidhtx.html