上面公共方法中不支持excelReader.getSheets();
时间: 2024-03-06 13:48:50 浏览: 167
非常抱歉,您是对的,上面的代码确实有误。这里是一个修正后的版本,该版本可以正确地读取Excel,并返回List数据集:
```java
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.Sheet;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class ExcelUtils {
/**
* 读取Excel文件并返回List数据集
* @param file Excel文件
* @return List数据集
*/
public static List<Object> readExcelToList(MultipartFile file) throws IOException {
List<Object> list = new ArrayList<>();
InputStream inputStream = file.getInputStream();
ExcelReader excelReader = EasyExcel.read(inputStream, new AnalysisEventListener<Object>() {
@Override
public void invoke(Object data, AnalysisContext context) {
list.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 解析结束销毁不用的资源
try {
excelReader.finish();
} catch (IOException e) {
e.printStackTrace();
}
}
}).build();
excelReader.read(new Sheet(1, 1, Object.class));
return list;
}
}
```
这个版本的关键区别在于,我们在构建ExcelReader时创建了一个AnalysisEventListener对象,并将其传递给EasyExcel.read()方法。然后,在调用excelReader.read()方法之前,我们使用Sheet对象创建了一个空的Sheet,以确保我们可以读取Excel中的所有Sheet。此外,我们还在doAfterAllAnalysed()方法中调用了excelReader.finish()方法,以销毁不再需要的资源。
请注意,这个修正版本的代码也需要处理IOException异常。
阅读全文