阿里easyExcel 簡單導入

阿里git連接 點這裏

git上的demo

git上demo
git上有比較詳細的使用demo,這裏只是結合自己實際操作做下總結

maven 導入

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

最新版本 點這裏

最新版本

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連接 點這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章