网站首页 > java教程 正文
平时我们在开发中,经常会遇到excel导入的问题,阿里巴巴不的easyExcel可以快速的帮助我们完成excel数据的解析,封装成指定的Java对象,方便我们快速的进行面向对象的编程。
下面是使用EasyExcel实现上传Excel文件,导入数据的一个例子,要求使用注解标记字段映射:
- 添加EasyExcel的依赖和Lombok的依赖
在pom文件中添加如下的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
在之后的代码中使用了Lombok注解@Data、@NoArgsConstructor来自动生成getter、setter、默认构造方法等方法。
- 创建实体类
我们定义如下的实体类来对应Excel文件中的一行数据:
@Data
@NoArgsConstructor
public class User {
@ExcelProperty(value = "姓名", index = 0)
private String name;
@ExcelProperty(value = "年龄", index = 1)
private Integer age;
@ExcelProperty(value = "邮箱", index = 2)
private String email;
}
该实体类使用了Lombok注解@Data、@NoArgsConstructor来自动生成getter、setter和默认构造方法。同时我们使用了EasyExcel的注解@ExcelProperty来标记实体类中的每个属性与Excel中的列的对应关系。value表示Excel中列的名称,index表示该列的索引,从0开始。
- 前端页面
在前端页面中,我们需要创建一个表单,允许用户上传Excel文件。可以使用以下的HTML代码:
<form method="post" enctype="multipart/form-data" action="/uploadAndRead">
<input type="file" name="file">
<button type="submit">上传并读取</button>
</form>
其中,使用了enctype="multipart/form-data"表示表单内容为二进制数据,同时需要设置method为POST请求。
- 后端实现
在后端实现中,我们需要创建一个Controller来处理上传的Excel文件,然后使用EasyExcel库来读取Excel中的数据,并返回给前端页面。
以下是Controller的实现:
@RestController
public class FileUploadController {
@PostMapping("/uploadAndRead")
public List<User> uploadAndRead(HttpServletRequest request) {
String fileName = null;
try {
// 1. 获取上传的文件
MultipartFile file = ((MultipartRequest) request).getFile("file");
fileName = file.getOriginalFilename();
// 2. 构建Excel读取器
InputStream inputStream = file.getInputStream();
List<User> list = new ArrayList<>();
ExcelReader excelReader = EasyExcel.read(inputStream)
.excelType(ExcelTypeEnum.XLSX)
.head(User.class)
.registerReadListener(new AnalysisEventListener<User>() {
@Override
public void invoke(User user, AnalysisContext analysisContext) {
list.add(user);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
})
.build();
// 3. 读取Excel文件并返回数据
excelReader.read();
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
在上述代码中,我们通过@RequestParam注解来获取上传的Excel文件,并使用该文件构建Excel读取器。读取器通过head()方法来传入我们定义的实体类,并指定该实体类的属性与Excel列的对应关系。我们还注册了一个AnalysisEventListener来监听读取到的数据,并将累加到list中。最后,Controller将数据返回给前端页面。
- 测试
在完成上述步骤之后,我们就可以使用浏览器访问前端页面,并上传Excel文件了。上传完成后,EasyExcel库会自动将Excel文件解析,然后返回数据。我们可以在浏览器上看到读取到的数据。
该例子是一个比较简单的EasyExcel导入Excel的实例,同时也使用了注解来标记实体类中的字段与Excel列的对应关系,希望对你有所帮助
猜你喜欢
- 2024-11-17 「开源资讯」MyExcel 3.3.0.GA 发布,终于支持图片导入啦
- 2024-11-17 如何优雅的用POI导入Excel文件
- 2024-11-17 EasyExcel 优雅实现 Excel 导入导出
- 2024-11-17 Spring Boot框架下实现Excel服务端导入导出
- 2024-11-17 Java 设置Excel工作表的视图模式
- 2024-11-17 使用jxl将excel行转列输出
- 2024-11-17 在Java中,如何以编程的方式设置 Excel 单元格样式
- 2024-11-17 Java 将Excel工作表中的图表转换为图片
- 2024-11-17 Java 查找、替换并高亮Excel数据
- 2024-11-17 相见恨晚,用阿里 EasyExcel 优雅实现导入导出功能
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)