- 先在pom文件里面导入jar包
<!--版本号根据你项目而定-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
2.可以开始写代码逻辑了
@GetMapping("/testExport")
public void listHospitalIllness(HttpServletResponse response) {
try {
// 设置内容格式 以及 编码方式
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 调用service去获取数据
List<UserPo> resultList= exportService.selectAll();
// 使用java8新特性的stream流去处理数据,把空的数据过滤掉
List<UserBo> resultBo = resultList.stream().filter(Objects::nonNull)
.map(t -> {
return UserBo.builder()
.name(t.getName())
.sex(t.getSex())
.age(t.getAge())
.build();
}).collect(Collectors.toList());
// 设置文件名称
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode("测试导出", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
// sheet名称
EasyExcel.write(response.getOutputStream(), UserBo.class).sheet("测试导出").doWrite(resultBo);
} catch (Exception e) {
e.printStackTrace();
}
}
3、userPo是返回的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserPo {
private String Id;
private String name;
private String sex;
private String age;
}
4、userBo是导出excel需要用的实体
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
//内容高度
@ContentRowHeight(25)
//表头行高度
@HeadRowHeight(25)
//列的宽度
@ColumnWidth(25)
public class UserBo {
//表头名称
@ExcelProperty("姓名")
private String name;
@ExcelProperty("性别")
private String sex;
@ExcelProperty("年龄")
private String age;
}
5、直接上输出结果
这都是在上面可以设置的,具体可以查看第二步骤 controller里面的注释
easyexcel的默认样式是表头加粗,至于@Data和其他实体类上的注解 不起作用的话,记得下载lombok插件
基本步骤就是这样的,祝你们成功!