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