easypoi实现Excel文件的导出功能

easypoi实现Excel文件的导出功能:

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.前端部分代码

<%--注意这里,我们不加 type属性的时候,点击按钮就具有提交功能--%>

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名称
}

5.功能测试
easypoi实现Excel文件的导出功能_第1张图片导出结果:
easypoi实现Excel文件的导出功能_第2张图片

你可能感兴趣的:(easy-poi)