最近有这样的需求,客户需要把报表,列表等导出成Excel, 目前来说是使用纯JAVA编写,使用的是JXL。 据客户反应,如果大数据量需要等待较长时间。 这个时候客户并不知道到底需要多长时间。 所以呢,现在有要求导出的时候需要遮盖层(这个倒是简单),同时必须提示 导出剩余时间。。。 这就让我摸不着头脑。
请各位兄弟帮帮忙。最近太累了,连续忙了几个晚上。脑子一片混乱。
最近有这样的需求,客户需要把报表,列表等导出成Excel, 目前来说是使用纯JAVA编写,使用的是JXL。 据客户反应,如果大数据量需要等待较长时间。 这个时候客户并不知道到底需要多长时间。 所以呢,现在有要求导出的时候需要遮盖层(这个倒是简单),同时必须提示 导出剩余时间。。。 这就让我摸不着头脑。
请各位兄弟帮帮忙。最近太累了,连续忙了几个晚上。脑子一片混乱。
jxl 好像是把所有的数据都先加载到内存的. 大数据量的时候这个比较恐怖.
曾经做过一项目导出的时候导出成逗号分隔符文件,强制以xls结尾, 但打开的时候office会弹出警告
如果量少,而且格式不是很复杂,就用最简单的方式
http://xiegengcai.iteye.com/blog/718254
我做过一次jxl导出excel的压力测试。基本思路是分批读取数据库数据,按行数拆分excel。测试过200w行数据,jvm分了2g内存,每次从数据库读2w行数据,每个excel最多存6w行,超出之后就按文件名_0.xls,文件名_1.xls拆分。跑起来之后200w行数据12分钟导完,内存占用最高时大约1g,平均大约0.5~0.6g。我们的客户接受了这个结果。
导出剩余时间么……我们这边是设置了定时任务,半夜的时候运行。所以没考虑过这个
时间有两部分,第一部分是处理时间,时间主要花在这上面,可以通过定时向服务器发ajax请求获取处理进度,服务器可单独开启一线程处理此进度请求的响应。第二部分传输时间,一般浏览器上会自带进度条显示,可以不管。
服务器端action
客户端HTML:
javascript:
引用来自“喜之郎”的答案
服务器端action
客户端HTML:
javascript: