阿里easyExcel 简单导入

阿里git连接 点这里

git上的demo

阿里easyExcel 简单导入_第1张图片
git上有比较详细的使用demo,这里只是结合自己实际操作做下总结

maven 导入

 <!-- excel 导入 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.0.5</version>
        </dependency>

最新版本 点这里

阿里easyExcel 简单导入_第2张图片

esayExcel 比较简单的导入分为三个步骤

1.导入模板类,用来保存Excel数据

2.继承自AnalysisEventListener 的一个listener,可以进行一些业务操作

3. 业务类中EasyExcelFactory.read()进行读操作

1. 导入模板类

@Data
public class ImportSiteExcel {

    /**
     * 站点名称  字段名 : siteName
     */
    @ExcelProperty(index = 0)
    private String siteName;

    /**
     * 接入编码  字段名 : accessCode
     */
    @ExcelProperty(index = 1)
    private String accessCode;
}

@ExcelProperty(index = 0) 用来指定列数,从0开始,也可以添加value =“站点名称”

2. 继承AnalysisEventListener 重写一些方法,添加自己的业务

public class SiteExcelListener extends AnalysisEventListener<ImportSiteExcel> {

 	/**
     * 用来保存Excel数据
     */
    private List<ImportSiteExcel> importSiteExcels = new ArrayList<>();

    @Override
    public void invoke(ImportSiteExcel importSiteExcel, AnalysisContext analysisContext) {
    // 	一行行读Excel数据,添加到list 也可以不添加直接保存 save(importSiteExcel);
        importSiteExcels.add(importSiteExcel);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
//			全部读完后执行
    }

    public List<ImportSiteExcel> getImportSiteExcels() {
        return importSiteExcels;
    }
}

3. EasyExcelFactory.read()

public ResponseResult importSite(MultipartFile file) throws IOException {
        if (file.isEmpty()) {
            return ResponseResult.error("文件为空");
        }
        InputStream inputStream = file.getInputStream();
        try {
            SiteExcelListener siteExcelListener = new SiteExcelListener();
//            listener中添加数据及插入 ;ImportSiteExcel用来存储
            EasyExcelFactory.read(inputStream, ImportSiteExcel.class, siteExcelListener).sheet(1).doRead();
           
        } catch (Exception e) {
            return ResponseResult.error(e);
        } finally {
            inputStream.close();
        }
        return ResponseResult.success();
    }

EasyExcelFactory.read()有很多重载方法,比如读file 或者直接路径pathName。sheet(1)指定第几个sheet ;最简单的一个Excel读就完成了

// read 的其他重载方法
 public static ExcelReaderBuilder read(File file, Class head, ReadListener readListener) {
        ExcelReaderBuilder excelReaderBuilder = new ExcelReaderBuilder();
        excelReaderBuilder.file(file);
        if (head != null) {
            excelReaderBuilder.head(head);
        }

        if (readListener != null) {
            excelReaderBuilder.registerReadListener(readListener);
        }

        return excelReaderBuilder;
    }

    public static ExcelReaderBuilder read(String pathName) {
        return read((String)pathName, (Class)null, (ReadListener)null);
    }

还有不需要模板的导入之类 具体实现可以去git 上看源码和demo

阿里git连接 点这里

你可能感兴趣的:(java,学习笔记)