1.先导入依赖包:
cn.afterturn
easypoi-base
3.2.0
cn.afterturn
easypoi-web
3.2.0
cn.afterturn
easypoi-annotation
3.2.0
2.设置需要导出的实体类的字段注解
@Entity
@Table(name = "employee")
@ExcelTarget("emp")// 这个注解代表上传的下载的时候,这个表的别名
public class Employee extends BaseDomain{
@Excel(name = "用户名")//这是导出表对应该字段的列名
@NotNull(message = "用户名不允许为空") //这个注解是代表验证条件,不允许为空
private String username;
private String password;
@Excel(name = "邮件",width = 20)//这是导出表对应该字段的列名,可以设置宽度
private String email;
@Max(value = 60,message = "max 最大年龄值不能超过60")// 这个注解是代表验证条件,代表最大值
@Min(value = 18,message = "min 最小年龄值不得低于18")
@Excel(name ="年龄")
private Integer age;
//当type=2时代表我们导出的类型是图片
@Excel(name = "头像",type = 2,savePath = "/images/head",width = 10,height = 17)
private String headImage;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "department_id")
@ExcelEntity // 这个注解代表这是一个实例
private Department department;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "employee_role",joinColumns = @JoinColumn(name ="employee_id"),inverseJoinColumns = @JoinColumn(name = "role_id"))
private List roles = new ArrayList<>();
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getHeadImage() {
return headImage;
}
public void setHeadImage(String headImage) {
this.headImage = headImage;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
public List getRoles() {
return roles;
}
public void setRoles(List roles) {
this.roles = roles;
}
}
3.前端部分代码
4.后台代码执行导出
【注意】:
在写controller过程中,【传入查询】需要的参数,最后导出的结果就是所查询到的结果
【注意】:1.在导出图片的时候,我们需要获取项目的真实路径
2.最后我们返回的是一个视图的名称
//返回的名称 :easypoiExcelView 现在 并没有找我们要找的bean,而且当做一个路径去进行访问
// 现在默认去找的视图解析器,我们需要在springMvc.xml中配置,首先去找我们定义的bean
在springMVC.xml中配置:让spring中配置的视图解析器,先去找我们配置的视图
@RequestMapping("/download")
public String download(EmployeeQuery query, ModelMap map, HttpServletRequest request){
// 将查询到的结果返回,就是从数据库中查询到的结果
List byQuery = employeeService.findByQuery(query);
// 获得项目的真实路径
String realPath = request.getServletContext().getRealPath("");
byQuery.forEach(e->{
// 下载【图像需要真实路径】
e.setHeadImage(realPath+e.getHeadImage());
});
//设置一些属性 表的标题 表明 输出Excel的类型
ExportParams params = new ExportParams("员工管理", "员工明细", ExcelType.XSSF);
//params.setFreezeCol(3); // 这个表示的横线
map.put(NormalExcelConstants.DATA_LIST, byQuery); // 数据集合
map.put(NormalExcelConstants.CLASS, Employee.class);//导出实体
map.put(NormalExcelConstants.PARAMS, params);//参数
map.put(NormalExcelConstants.FILE_NAME, "employee");//文件名称
//返回的名称 :easypoiExcelView 现在 并没有找我们要找的bean,而且当做一个路径去进行访问
// 现在默认去找的视图解析器,我们需要在springMvc.xml中配置,首先去找我们定义的bean
return NormalExcelConstants.EASYPOI_EXCEL_VIEW;//View名称
}