easypoi 导出 excel时如何查看进度

由于最近做的项目的导出人员列表功能需要加上人员图片列,由于导出时需要往excel插入二进制文件内容,所以导出阶段,有点慢,客户想看到导出进度,总比干等强,可以重写模型实体类的get方法上取得模型集合的长度和当前遍历的角标数,即可算出导出进度百分比,浏览器再发送一个请求导出进度的数据,即可渲染百分比进度条,轻松实现效果:

模型实体类中部分代码:

public class XxxModel(){
    public static final ThreadLocal<Integer> threadLocal_collectionSize = new ThreadLocal<>();
    public static final ThreadLocal<Integer> threadLocal_insertIndex = new ThreadLocal<>();

    @Excel(name = "姓名",width= 15.00,orderNum = "1" )
    private String name;

    @Excel(name = "工号",width= 15.00,orderNum = "2" )
    private String oa;

    @Excel(name = "图片", type = 2, width = 7.0,height = 21.0,imageType = 1,orderNum = "3")
    private String faceImagePath;

    @Excel(name = "部门",width= 15.00,orderNum = "4" )
    private String depName;

    @Excel(name = "联系方式",width= 15.00,orderNum = "5" )
    private String phone;

    public String getName() {
        Integer insertIndex = threadLocal_insertIndex.get();
        // System.out.println( "call get name " + name  + " " + insertIndex + "/" + threadLocal_collectionSize.get());
        insertIndex++;
        threadLocal_insertIndex.set( insertIndex );
        return name;
    }
}

导出逻辑部分代码:

XxxModel.threadLocal_collectionSize.set( models.size() );
 XxxModel.threadLocal_insertIndex.set( 1 );
 ExcelUtils.exportExcel( models,tittleName,sheetName, XxxModel.class,fileName,null, response);
经验分享 程序员 微信小程序 职场和发展