1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > excel文件导出进度条的实现

excel文件导出进度条的实现

时间:2024-05-26 03:52:07

相关推荐

excel文件导出进度条的实现

前言:

在做excel文件下载时 发现数据导出请求方法中response.getOutputStream().close(); 会关闭请求 从而得不到返回的标识来关闭进度条,故结合网上资料做了如下功能。

功能概要:

前端先隐藏一个div来做是否关闭的标识,点击下载后开启进度条显示,之后进入后台 后台开始时先移除上次的关闭进度条标识(request.getSession().removeAttribute("endflag");) 在导出逻辑最后在session中存放标识标识该关闭进度条了 (request.getSession().setAttribute("endflag", "1");); 前端在写一个定时任务来请求session中查看结束标识,当确认是结束标识是结束定时任务并关闭进度条。

<a href="javascript:void(0)" onclick="showMenu()" class="easyui-linkbutton" iconCls="icon-downtemplate" plain="true">导出</a><div id="menuid" class="easyui-menu" style="width:120px;"><div data-options="iconCls:'icon-add'"><a href="javascript:void(0)" style="text-decoration:none;out-line: none;color:#3C3C3C;" onclick='exportInfo("EXCEL")'>导出为.EXCEL</a></div><div class="menu-sep"></div><div data-options="iconCls:'icon-add'"> <a href="javascript:void(0)" style="text-decoration:none;out-line: none;color:#3C3C3C;" onclick='exportInfo("TXT")'>导出为.TXT</a></div></div><input type="hidden" id="divloads" name="bondname" value="0">

//导出菜单栏function showMenu(){$('#menuid').menu('show', {//left: 200,top: 30});}function exportInfo(name){$("#divloads").val("0")$.messager.progress({title: '提示',msg: '请稍候……',text: '债券信息下载中……'});if("EXCEL" === name){var url="";window.location.href=url; }else if("TXT" === name){var url="";window.location.href=url; } listenEnd();}function listenEnd() {//定时监听 var loop = setInterval(function() {if ($("#divloads").val() == "1") {clearInterval(loop);//停止定时任务$.messager.progress('close');//进度条关闭} else {getendflag();}}, 1000);//单位毫秒 注意:如果导出页面很慢时,建议循环时间段稍长一点}function getendflag() {//请求session标记位 $.ajax({url: "",type : 'POST',dataType : 'json',data : { "content" : '123' },success : function(data) {if("1"==data.obj.flag){$("#divloads").val("1")}},error: function (XMLHttpRequest, textStatus, errorThrown) { // 设置表单提交出错alert("操作失败,请联系系统管理员或稍后再试!" + XMLHttpRequest.status + " " + XMLHttpRequest.readyState + " " + textStatus + " "+ errorThrown);},});}

//导出逻辑时将标识放入session中request.getSession().removeAttribute("endflag");request.getSession().setAttribute("endflag", "1");//获取结束标记@RequestMapping("/getEndFlag")@ResponseBodypublic JSONObject getendflag(HttpServletRequest request, HttpServletResponse response) {JsonResult result = new JsonResult(Response.SUCCESS);JSONObject obj = new JSONObject();Object flag = request.getSession().getAttribute("endflag"); //获取结束标记*/obj.put("flag", flag);//返回状态值result.putObject(obj);return result.getResult();}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。