栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

excel文件导出之前的等待提示信息

Java 更新时间:发布时间: 百科书网 趣学号
前言

如题,最近也是遇到了一个项目里有导出数据到excel的功能,因为数据量大以及网络原因,经常点击导出按钮后迟迟不响应,对等待的人很不友好,所以建议加一个等待提示框。(本来想加个进度条,奈何有问题一直解决不掉,赶进度只好换成简单的提示框了QAQ)

温馨提示:项目是ssh,所以以下实现基于此。若springboot则根据自己情况替换。

实现

先上前台代码:

exportUrl: apiPrefix + "!excelExport.action?timeZone=",
isExportUrl: apiPrefix + "!isExport.action",

...


function do_export(isExportUrl, exportExcelUrl) {
    var index = top.layer.alert("数据正在导出中,请耐心等待!", {icon: 16,closeBtn:0,btn:[]});
    let d = new Date();
    let utc = d.getTimezoneOffset();
    let da = 8 * 60 - (-utc);
    location.href = exportExcelUrl + da;
    // 定时器判断导出进度是否完成
    var timer = setInterval(function(){//每隔1秒进行调用该函数
        $.ajax({
            url:isExportUrl,
            success: function(data){
                console.log(data);
                if(data === "true"){//如果返回的数据是已经成功了说明表格已经加载完成了
                    layer.closeAll();//关闭所有的提示框
                    //关闭弹出框
                    top.layer.close(index);
                    clearInterval(timer);//清除这个方法
                }
            },
            error:function(e){
                console.log("访问失败");
                console.log(e.responseText);
            }
        });
    }, 1000);
}

后端代码:

父类BaseAction中:

// 新增获取session对象
	public HttpSession getSession() {
		return ServletActionContext.getRequest().getSession();
	}

	// 成功
	public void writeWithUtf8(String str) {
		try {
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentType("text/html");
			response.setCharacterEncoding("utf-8");
			this.write(str);
		} catch (Exception e) {
			log.error(e,e);
		}
	}
	// 输出响应
	public void write(String str) throws Exception {
		HttpServletResponse response = this.getResponse();
		response.getWriter().write(str);
		response.getWriter().flush();
		response.getWriter().close();
	}

——子类xxInfoAction里isExport方法——:

// 新增一个通用获取是否导出完毕方法,session中存入一个exportedFlag标志
    public void isExport() {
        Object exportedFlag = super.getSession().getAttribute("exportedFlag");
        if (exportedFlag == null) {
            logger.info("已经导出完毕");
            super.writeWithUtf8("true");
        }else {
            // logger.info("还未导完");
            super.writeWithUtf8("false");
        }
    }

——子类xxInfoAction里excelExport方法——:

public String excelExport() {
        // 导出前设置session中exportedFlag任意值,导出后清空
        super.getSession().setAttribute("exportedFlag", "false");

        HSSFWorkbook workbook = new HSSFWorkbook();
        try {
           ...//导出完毕了
          super.getSession().removeAttribute("exportedFlag");
		  return filename;
        } catch (Exception e) {
            e.printStackTrace();
            log.error(e);
        } finally {
            try {
                workbook.close();
            } catch (Exception e) {
                log.error(e);
            }
        }

        return null;
    }

附:springboot里进度条实现:实现文件导出,写入等进度条实时显示


over~

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/959683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号