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);

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值