解决方案 »

  1.   

    我是做电商的,和你一样需要处理大数据量的数据。
    首先你只是说报表达到10W行,但是你没有提到列宽是多少。如果列宽超过20,那么就不用白费心思改到一张表里面了。
    读CSV文件是不需要多大的内存的,但是生成excel的时候冗余很大的。
    POI的方式直接生成xlsx的文件是不可以的,但是可以写入到xlsx文件。
    POI的方式直接生成xls的文件可以,但是生成的文件相当的大。
    我生成一份1.5W行,30列宽的文件xls的空间达到了60M。
    至于解决办法,我暂时有两种,
    一种就是尽量使用java的垃圾回收机制,把不需要的那种内存空间给回收掉。
    另外尽量少定义新的对象。
    第二,扩大java本身的运行内存,这个在run->Debug configuration->VM argument里面改-Xmx800m
    一般800M基本都没有问题了,还有问题的话就真是程序本身问题了。
      

  2.   

    poi高版本好像有处理大数据量的方式,但是我没用过。这种问题使用office的xml格式来到处很容易。就像写入文本文件一样简单。而且写入速度很快
      

  3.   

    10w的数据肯定会内存溢出的
    ps:将10 的数据分批次追加形式写入同一个excel试试。。
      

  4.   

    POI之前的版本不支持大数据量处理,如果数据过多则经常报OOM错误,有时候调整JVM大小效果也不是太好。3.8版本的POI新出来了SXSSFWorkbook,可以支持大数据量的操作,只是SXSSFWorkbook只支持.xlsx格式,不支持.xls格式。 
      

  5.   

    参考一下http://www.6sq.net/question/431463
      

  6.   

    这个poi3.8版本的可以处理了,我已经写出来了,周末的时候会给出代码给你参考下吧~
      

  7.   

    这个poi3.8版本的可以处理了,我已经写出来了,周末的时候会给出代码给你参考下吧~
    谢谢哈。[email protected]