在日常开发中,经常会遇到要操作Excel的功能,本文尝试一种新的方式,easypoi实现Excel导入导出,让一个不懂导入导出的人也能快速使用POI完成Excel的各种操作。
maven依赖
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
实体类
@Data
@EqualsAndHashCode(callSuper = false)
public class Member {
@Excel(name = "ID", width = 10)
private Long id;
@Excel(name = "用户名", width = 20, needMerge = true)
private String username;
private String password;
@Excel(name = "昵称", width = 20, needMerge = true)
private String nickname;
@Excel(name = "出生日期", width = 20, format = "yyyy-MM-dd")
private Date birthday;
@Excel(name = "手机号", width = 20, needMerge = true, desensitizationRule = "3_4")
private String phone;
private String icon;
@Excel(name = "性别", width = 10, replace = {"男_0", "女_1"})
private Integer gender;
}
导出
@RequestMapping(value = "/exportMemberList2", method = RequestMethod.GET)
public void exportMemberList2(HttpServletRequest request, HttpServletResponse response) {
List<Member> memberList = new ArrayList<>();
Member member1 = new Member();
member1.setId(11L);
member1.setUsername("caocao");
member1.setBirthday(new Date());
member1.setGender(0);
member1.setNickname("mengde");
member1.setPhone("13912345678");
Member member2 = new Member();
member2.setId(12L);
member2.setUsername("liubei");
member2.setBirthday(new Date());
member2.setGender(1);
member2.setNickname("xuande");
member2.setPhone("13912345678");
memberList.add(member1);
memberList.add(member2);
ExportParams params = new ExportParams("会员列表", "会员列表", ExcelType.XSSF);
Map<String, Object> map = new HashMap<>();
map.put(NormalExcelConstants.DATA_LIST, memberList);
map.put(NormalExcelConstants.CLASS, Member.class);
map.put(NormalExcelConstants.PARAMS, params);
map.put(NormalExcelConstants.FILE_NAME, "自定义");
PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);
}
导入
@RequestMapping(value = "/importMemberList2", method = RequestMethod.POST)
public Object importMemberList2(@RequestPart("file") MultipartFile file) {
ImportParams params = new ImportParams();
params.setTitleRows(1);
params.setHeadRows(1);
try {
List<Member> list = ExcelImportUtil.importExcel(file.getInputStream(), Member.class, params);
for (Member member : list) {
System.out.println(member.toString());
}
return "导入成功.";
} catch (Exception e) {
e.printStackTrace();
return "导入失败.";
}
}
导出结果如下
导入结果如下
具体复杂用法还需自行理解。