废话不多说,上干货是辰兮的传统了,收藏就完事了。
前言
随着大数据时代的不断发展,数据越来越多时,数据的批量导入和导出也随之而来,本文就介绍了EasyExcel导入导出的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、EasyExcel可以做什么?
EasyExcel,顾名思义,简单Excel,本文主要实现在web端情况下的导入导出。
二、使用步骤
1.引入pom依赖
代码如下(示例):
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.0-beta2</version>
</dependency>
2.导入:
代码如下(示例):
User.java(实体类)
注意:这里不能使用链式编程,使用@Accessors(chain = true)会导致获取的数据为null。
@Data
@AllArgsConstructor
@NoArgsConstructor
/*@Accessors(chain = true)*/
public class User {
@ExcelProperty(value = "编号")
private int id;
@ExcelProperty(value = "用户名")
private String username;
@ExcelProperty(value = "密码")
private String userpassword;
}
下面是一些常用的EasyExcel注解:
@ExcelProperty(value = "编号")
注解中有三个参数value
,index
,converter
分别代表列名,列序号,数据转换方式,value
和index
只能二选一,通常不用设置converter,一般只用设置value就可以,用于标题字段的描述。
@ColumnWith(value = 10)
用于设置列宽度的注解,注解中只有一个参数value,value的单位是字符长度,最大可以设置255个字符,因为一个excel单元格最大可以写入的字符个数就是255个字符。
@ContentRowHeight(value = 10)
用于设置行高
UserController.java
@PostMapping("/imports")
public void imports(MultipartFile file) throws IOException {
EasyExcel.read(file.getInputStream(), User.class, userListener).sheet().doRead();
List<User> users = userListener.getUsers();
for(User user:users){
userService.insertOne(user);
}
}
UserListener.java(监听器)
用于监听导入数据,invoke()方法是读取到每一行数据都做一个操作,doAfterAllAnalysed()方法是读取全部的数据之后做的操作。
@Component
public class UserListener extends AnalysisEventListener<User> {
List<User> users =new ArrayList<>();
@Override
public void invoke(User user, AnalysisContext analysisContext) {
users.add(user);
System.out.println(user);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
public List<User> getUsers() {
return users;
}
}
3、导出
UserController.java
@GetMapping("/exports")
public void exports(HttpServletResponse response) throws IOException {
List<User> users = userService.selectAll();
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode("userInfo", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(),User.class).sheet("模板").doWrite(users);
}
4、PostMan测试
导入测试:
添加参数xlsx文件进行测试
导出测试:
总结
以上就是今天要讲的内容,本文介绍了EasyExcel在web端导入导出的使用,如果觉得有帮助,就给辰兮点个赞吧!