美文网首页
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