jxsfreedom
kyousuke
2013-02-24 11:07
浏览 296
已采纳

J2EE 大数据量报表导出

对报表功能有个疑问,一般用户导出报表数据都是全部导出的吗?

系统现在有一个表,数据量为百万,用户筛选自己的数据后估计也有几十万,在页面显示当然通过分页显示了,如果用户要导出excel或pdf的话,是不是要把这几十万的数据全部导出啊?这么大的数据肯定很占内存,这个要怎么处理?

谢谢!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

13条回答 默认 最新

  • fei07100107
    fei07100107 2013-02-25 12:10
    已采纳

    首先需要将任务放到队列中进行导出,或者先一个线程也可以了,
    解决用户等待问题

    可以用流导出到csv文件,当然也是要分文件,比如一个文件导出10w条

    如果要导出到excel,可以采用poi,但是一个excel最好不要超出6万条,否则很容易报内存溢出,还是分文件解决大数量导出的问题

    点赞 评论
  • tiyi
    tiyi 2013-02-24 12:16

    我都建议这类方案是定时制度,即定时在某闲时输出。

    动态筛选实时输出肯定是占用大量资源的。
    除非可把任务分解。
    即便如此,耗时也很久,失去用户在.线.等.待的意义。

    点赞 评论
  • iteye_5246
    iteye_5246 2013-02-24 12:21

    分批导出,也就是提供用户选择导出
    例如:第一批 1-4000,第二批 4001-8000。。。。这个梯度自己控制,
    看你导出excel的列(我记得当时导出过十几列,4k多行)不是很卡
    在这个过程中可以使用多线程的模式分批读取数据
    例如:第一个线程负责读取1-4000行,把所有数据读取
    第二个线程负责读取 4001-8000 行记录。。。至于用多少个线程自己测试吧
    (虚拟 数据 的形式for循环来控制,看导出到多少行 会有明显卡 也就是最大行的瓶颈了,然后结合数据读取记录,这个过程可以考虑使用多线程)

    至于导出excel选用的 poi,jxl,JXLS 自己选择一个方式导出
    连接为demo地址
    [url]http://blog.csdn.net/csdnbenbenchong/article/details/7084419[/url]

    点赞 评论
  • qq359593234
    咖啡机 2013-02-24 14:29

    分批导出可以,比如1000为一个段

    点赞 评论
  • dsm02955299
    dsm02955299 2013-02-24 15:31

    数据格式简单的用csv,写流。
    数据格式复杂的,分批导出

    点赞 评论
  • M44346460
    M44346460 2013-02-24 22:42

    几十万条数据一次性导出,是不现实,只能通过批次导出。

    点赞 评论
  • haicunzaima
    haicunzaima 2013-02-24 23:19

    几十万数据导入到一个Excel文件中,不太现实,即使你费劲巴拉的倒出来了,用户也不一定能打开。一般都是限制一个文件大小的,比如说一个文件倒几行。

    如果是csv,建议直接用文本导出的形式倒出来,无非就是用逗号当间隔符。需要注意要将逗号等特殊符合转义,有个工具类可以用。

    如果非要导出Excel的话,可以试试fastexcel。

    点赞 评论
  • fykyx5212
    fykyx5212 2013-02-25 10:40

    如果知道excel 文件格式 自己写个多线程写入。。。

    点赞 评论
  • sunliao_first
    sunliao_first 2013-02-25 14:00

    后台分批次导出,导出后用压缩导出文件,打包给用户进行下载

    点赞 评论
  • vlinux
    vlinux 2013-02-25 19:43

    导出功能做成异步的,不要立即返回给用户,而是生成一个任务,告知用户完成时通知他即可。
    生成的时候也不要用poi这些,非常占用内存,几百万的数据,生成csv格式,不停的append,性能还能过的去~

    点赞 评论
  • yu_zhang430
    yu_zhang430 2013-02-26 10:29
    点赞 评论
  • iteye_18271
    iteye_18271 2013-02-26 10:35

    漫步算法试试

    点赞 评论
  • weixin_42513702
    weixin_42513702 2015-01-28 09:40

    你可以用帆软报表试一下,帆软报表针对大数据分析服务都提供了优质的技术人员,你有什么使用问题都可以问他们

    点赞 评论

相关推荐