最近修改一个小项目,其中一个需求是添加导出excel的功能,之前有做过,但没有添加进度条,这次干脆做的完整一点,添加个进度条,确定基本思路:
前端jquery,后端struts2,遵循原项目的架构。
前端问题:
1.progressBar使用jquery-progressbar插件,效果还可以,后来用jquery-blockui实现了导出时禁止用户再点击的功能,并且使用window.onbeforeunload事件,防止用户误操作退出页面。
2.使用iframe下载,实现所谓异步下载,主要还是如果不使用iframe,而直接用超链接,会导致ajax请求导出进度时,无法进行,貌似一个窗口只能同时发送一个http请求。
3.ie下各种bug,首先js里面的参数在ie中最后一个参数绝对不能有,。另外ie会对get进行缓存,即相同的请求,它会把 结果缓存,导致ajax请求导出进度时,每次得到的值都一样,解决方法是加上一个参数,如时间dc=new DateTime().getTime(),这样就使得每次的url都不同,就不会缓存了。
后台问题:
使用jxl.jar来生成excel,直接将excel写会。