由于最近做的项目的导出人员列表功能需要加上人员图片列,由于导出时需要往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);