如何在Excel导出时加一个提示框
(1) 问题描述
Excel导出的时候由于数据量较大,加上项目用的数据库和外网不在同一个局域网内,导致导出数据的时候速度很慢。最后客户要求,在导出的时候加上一个提示框,当导出完毕后,提示框自动消失。
这个问题比较棘手,因为导出数据的时候Action给前台返回的是流而不是文本,所以页面不会跳转,无论你Action里有没有配置跳转的页面地址,都不会跳转。
(2) 解决方案
步骤一: 在js中设置一个标志位,Excel导出的Action提交前给一个默认的初始值“0”,显
示提示框。
步骤二: 当Excel导出数据后把标志位设置为“1”,该标志位为Action的成员变量
步骤三: 另外在导出Excel方法所在的Action中增加一个方法,改方法的作用是查看标志位
的值有没有改变。
步骤四: 当Excel导出的form表单提交后,用ajax每3秒向请求查看标志位的Action
步骤五: 发现标志位的值发生改变后,ajax可以接受到成功的信息,最后把提示框隐藏。
(3) 代码
前台页面代码:
var tIfRun = '${ifRun}'; function exportExcel(){ var exportTtype = $('#select option:selected') .val();; var type0 = document.getElementById("type0").value; var type1 = document.getElementById("type1").value; var type2 = document.getElementById("type2").value; //显示提示框 document.getElementById("tc").style.display="block"; document.getElementById("bg").style.display="block"; document.getElementById("myForm").submit(); tIfRun='1'; } function timeCallBack() { if(tIfRun == '1') { htmlobj = $.ajax({url:"<%=basePath%>timeCallBack.action", async:false, type:"POST"}); if(htmlobj.responseText == 'ok') { //隐藏提示框 document.getElementById("tc").style.display ="none"; document.getElementById("bg").style.display ="none"; tIfRun = ''; } } }
后台:
public void timeCallBack() throws IOException { HttpServletResponse httpResponse = ServletActionContext.getResponse(); httpResponse.setContentType("text/xml"); httpResponse.setHeader("Content-Type", "text/xml; charset=UTF-8"); httpResponse.setHeader("Cache-Control", "no-cache, must-revalidate"); PrintWriter out = httpResponse.getWriter(); // 定义一个输出流 if (!"1".equals(LockIndex.getInstance().getIndexRunFlag())) { out.print("ok"); }
注意:timeCallBack() 方法和导出的方法都是放在同一个ExportAction.ava文件中的,标志位为
ExportAction.ava的成员变量。当然这个程序也可以把提示框改成一个滚动条的样式。
(4) 总结这个程序的精髓之处在于利用了ajax请求了和导出的方法在同一个Action类里的方法,
从而可以根据标志来判断数据有没有导出。
相关推荐
将超级列表框(报表列表框)导出为Excel表格文件。API+核心支持库,无第三方模块或支持库。易语言超级列表框导出到Excel表格模块源码例程程序调用API函数实现超级列表框导出到Excel表格。易语言超级列表框导出到Excel...
excel导出
易语言超级列表框快速导出EXCEL源码,超级列表框快速导出EXCEL,超级列表框保存为EXCEL
个人写的excel模板导出jar, 采用的是在excel中配置${\w-\w}类型标签,在 IExcelHandle接口集成类中实现具体的excel中报表值的计算. 提供源码和jar,其中有测试类和测试excel. 使用了java依赖倒置,将输出源,...
超级列表框导入excel和导出excel(支持导入导出表头)用黑夜上传的LibXL模块弄的,。@田心南。Tags:ExcelEXCEL导入导出excel表。
spring框架,导入excel中的数据到数据库,导出数据库数据到excel文件
java Excel导出 Excel数据处理
Excel选中数据进行导出时不需要导出表头。
java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入
纯JavaScript实现json格式数据导出到Excel文件,支持多个Sheet页导出
导出Excel功能,导出Excel功能,导出Excel功能,导出Excel功能
Excel导出数据 Excel导出数据 Excel导出数据 Excel导出数据 Excel导出数据
php excel导出 导入php excel导出 导入php excel导出 导入php excel导出 导入
需要使用JAVA 做EXCEL导出的同学,有问题尽管私信
导出Excel 一个Excel多个sheet
excel导出,支持前台和后台导出,并用struts2,简洁代码
易语言超级列表框快速导出EXCEL源码。@易语言源码分享站。
springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel ...
spreadjs_导出 Excel 显示复选框而不是布尔值-demo
用于考核的系统,导出EXCEL导出EXCEL