Java往Excel写入海量数据

HEERY 2007-05-10

最近需要往Excel写入海量数据,大约10W笔左右(超过6万会新建一个sheet再写)

开始使用POI的包,写1W笔左右就outofmemory了

后来换用jxl,写1.8w笔左右报outofmemory

(我机器配置Pentium(R)D3GHZ,双核,内存1G)

考虑到分批次写是否会好一些,每次先把数据写到一个临时文件,然后关闭流

再将临时文件读入后再往里写,可是发现这样还是不行

用jprofiler看了看内存使用状况,发现其实数据本身占空间并不是很大,而是每

一个cell会产生很多相关的对象(不管是POI还是jxl,jxl资源释放会快一些),

这些对象比数据本身占的空间要大得多,更郁闷的是即便是读入一个Excel文件,

也会为有值得cell自动产生这些对象

所以分批次写也行不通,因为中间产生的临时文件读入进来也可能耗光内存

现在能想到的解决方案:1.加内存,客户不乐意

2.替换成csv格式的文本,客户说这样产生文件数量太多也不乐意

不知各位还有什么高见?

谢谢

相关推荐