阿里git連接 點這裏
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);
}