EasyExcel读取excel文件
程序员文章站
2024-03-20 15:21:22
...
EasyExcel读取excel文件
自用
step 1:引入依赖
<!--easyexcel依赖-->
<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.0.5</version>
</dependency>
step 2:编写通用工具类
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.*;
public class ExcelUtils {
/**
* 根据excel输入流,读取excel文件
*
* @param inputStream exece表格的输入流
* @return 返回双重list的集合
**/
public static List<List<String>> getWithoutHead(InputStream inputStream) {
StringExcelListener listener = new StringExcelListener();
//不读取表头
ExcelReader excelReader = EasyExcelFactory.read(inputStream, null, listener).headRowNumber(1).build();
excelReader.read();
List<List<String>> datas = listener.getDatas();
excelReader.finish();
return datas;
}
private static class StringExcelListener extends AnalysisEventListener {
/**
* 自定义用于暂时存储data
* 可以通过实例获取该值
*/
private List<List<String>> datas = new ArrayList<>();
/**
* 每解析一行都会回调invoke()方法
*
* @param object 读取后的数据对象
* @param context 内容
*/
@Override
public void invoke(Object object, AnalysisContext context) {
@SuppressWarnings("unchecked") Map<String, String> stringMap = (HashMap<String, String>) object;
//数据存储到list,供批量处理,或后续自己业务逻辑处理。
datas.add(new ArrayList<>(stringMap.values()));
//根据自己业务做处理
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
//解析结束销毁不用的资源
//注意不要调用datas.clear(),否则getDatas为null
}
/**
* 返回数据
*
* @return 返回读取的数据集合
**/
public static List<List<String>> getDatas() {
return datas;
}
/**
* 设置读取的数据集合
*
* @param datas 设置读取的数据集合
**/
public void setDatas(List<List<String>> datas) {
this.datas = datas;
}
}
// 这里的excel文件可以 为xls或xlsx结尾
public static List<Object> readExcel(InputStream inputStream) {
if(inputStream==null){
return null;
}
List<List<String>> result = new ArrayList<>();
try {
result = this.getWithoutHead(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
return Collections.singletonList(result);
}
public static List<Object> readExcel(File file) {
if(file==null){
return null;
}
List<List<String>> result = new ArrayList<>();
try {
result = this.getWithoutHead(new FileInputStream(file));
} catch (Exception e) {
e.printStackTrace();
}
return Collections.singletonList(result);
}
}
后续补充注入实体类
上一篇: VRRP实验——虚拟路由冗余协议
下一篇: EasyExcel读写Excel文件