客户要求从数据库导出6万条数据,每条记录50个字段,每个字段255长,共750M的内容.我起初用POI软件包,后面发现它只能整个workbook写入文件,而750M的workbook在内存中放不下的,后来用jxl软件包,还是不行,因为它修改已经excel的方法是将已有excel载入内存,然后复制一份,然后才可以往里面添加数据,文档中解决OutOfMemory建议的方法是加大JVM的内存,却没有其它的方法.  网上有帖子说:"大数据量 用java 调用vba 用模板生成",用vba(Visual Basic For Application)真的能解决大量数据导入Excel问题吗?
   相信很多人都遇到过将数据库中的数据导入到Excel文件的问题,当数据量过大时,你们是怎么处理的呢?
  谢谢!

解决方案 »

  1.   

    我以前用vb导过vba应该没问题。不过每个exel文件页最多能只能容纳18000多条记录,一定要注意。
      

  2.   

    Excel的每个Sheet最大容纳是有限制的。如果数据量很大,可以考虑生成多个excel文件。
      

  3.   

    赞同2楼的
    6万条写excel够呛
    或者你可以折衷一下,先生称文本文件,字段用指示符隔开,比如逗号,分号之类的
    再手动导入excel.
      

  4.   

    你是什么数据库?如果是sql server的话可以不用java操作数据写入excel的,sqlserver有一个存储过程可以直接把数据导入excel其他数据库系统应该也有吧,具体的操作sql语句网上可以搜索到的,很简单啊
      

  5.   

    OutOfMemory 我觉得也是正常的啊。如果你的维护你这么多数据,肯定需要很大内存空间,默认的heap size很小的。
      

  6.   

    在excel里利用vba可以实现的,自己写个宏。
    不过要考虑2楼的意见。
      

  7.   

    理论上一个sheet可以存储65535行记录,但是当记录行到达一定的时候效率骤然低下。
    是不是可以这样实现:
    首先分批次查出数据,比如每次1w条记录。写入sheet1、sheet2、sheet3...
    也就是说这个文件有6个sheet,而每个sheet存储1w条记录,不知道是否可行?
    其次要考虑的是第一次创建excel文件,而以后是改写(添加sheet),并不去创建了。
    不行请指点!谢谢以前只实现过写一个sheet,我去试试!哈