springboot 中 读取excel Easy Excel 上传的文件
时间: 2024-03-06 17:48:27 浏览: 189
好的,使用 Easy Excel 读取 Excel 文件可以很方便地实现。以下是 Spring Boot 中使用 Easy Excel 读取 Excel 文件的示例代码:
首先,需要在 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
```
然后,创建一个 ExcelUtils 工具类,代码如下:
```java
public class ExcelUtils {
/**
* 读取 Excel 文件
*
* @param inputStream Excel 文件输入流
* @param clazz 映射实体类的 Class 对象
* @param <T> 实体类类型
* @return Excel 文件中的数据列表
*/
public static <T> List<T> readExcel(InputStream inputStream, Class<T> clazz) {
List<T> dataList = new ArrayList<>();
try {
// 创建 Excel 读取器
ExcelReader excelReader = EasyExcelFactory.getReader(inputStream);
// 获取第一个 sheet
ReadSheet readSheet = EasyExcelFactory.readSheet(0).build();
// 注册数据监听器
excelReader.registerReadListener(new ExcelListener<T>(dataList));
// 开始读取数据
excelReader.read(readSheet);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return dataList;
}
/**
* Excel 监听器,用于读取 Excel 文件中的数据
*
* @param <T> 实体类类型
*/
private static class ExcelListener<T> extends AnalysisEventListener<T> {
// 数据列表
private List<T> dataList;
public ExcelListener(List<T> dataList) {
this.dataList = dataList;
}
@Override
public void invoke(T data, AnalysisContext context) {
// 读取每一行数据
dataList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 读取完成后的操作
}
}
}
```
最后,在 Controller 中添加以下代码,即可实现上传 Excel 文件并读取其中数据的功能:
```java
@PostMapping("/uploadExcel")
public ResponseEntity<String> uploadExcel(@RequestParam("file") MultipartFile file) {
try {
// 读取 Excel 文件
List<ExcelData> dataList = ExcelUtils.readExcel(file.getInputStream(), ExcelData.class);
// 处理 Excel 数据
// ...
return ResponseEntity.ok("上传成功");
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("上传失败");
}
}
```
其中,ExcelData 是映射 Excel 文件中数据的实体类。
阅读全文