packagecom.harara.easyexcel.read;importcom.alibaba.excel.ExcelReader;importcom.alibaba.excel.event.AnalysisEventListener;importcom.alibaba.excel.metadata.BaseRowModel;importcom.alibaba.excel.metadata.Sheet;importcom.alibaba.excel.support.ExcelTypeEnum;importcom.harara.model.User;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.util.ArrayList;importjava.util.List;/***@author: harara
*@version: 2.0
* @date : 2020/6/10 9:41*/
public classExcelReadTest {public List read(String filename, Class rowModel) throwsException{
ExcelListener excelListener= newExcelListener();
ExcelReader excelReader= getExcelReader(new File(filename),excelListener,true);if(excelReader == null){return newArrayList();
}for(Sheet sheet:excelReader.getSheets()){
sheet.setClazz(rowModel);
excelReader.read(sheet);
}
List list = new ArrayList<>();for(Object obj:excelListener.getDataList()){
list.add((T)obj);
}returnlist;
}/***
*@paramin 文件输入流
*@paramcustomContent 自定义模型可以在AnalysisContext中获取用于监听者回调使用
*@parameventListener 用户监听
*@paramtrim 是否对解析的String做trim()默认true,用于防止excel中空格引起的装换报错
*@return
*/
public staticExcelReader getExcelReader(File file,
AnalysisEventListener eventListener,boolean trim) throwsException{
String fileName=file.getName();if (fileName == null) {throw new Exception("文件格式错误!");
}if (!fileName.toLowerCase().endsWith(ExcelTypeEnum.XLS.getValue()) && !fileName.toLowerCase().endsWith(ExcelTypeEnum.XLSX.getValue())) {throw new Exception("文件格式错误!");
}
InputStream inputStream= null;try{
inputStream= newFileInputStream(file);if(fileName.toLowerCase().endsWith(ExcelTypeEnum.XLS.getValue())) {return new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, eventListener, false);
}else{return new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, eventListener, false);
}
}catch(Exception e){
e.printStackTrace();return null;
}
}public static voidmain(String[] args) {
ExcelReadTest excelReadTest= newExcelReadTest();try{
List users = excelReadTest.read("excelByModel.xlsx", User.class);
System.out.println(users);
System.out.println("读取完成");
}catch(Exception e){
e.printStackTrace();
}
}
}