请问使用POI如何处理大数据量内存溢出的问题。
客户要求把所有的数据写入一个Sheet中(大概10~20万),他们需要使用VBA在另外的Sheet里面做处理,所以要求写入到一个Sheet里面,他们处理起来方便。使用最新的POI(支持Excel2007以上,可以一个Sheet写入100多万条记录)。
现在的问题是如何处理大数据量,内存溢出的问题。
网上的说法是可以分多个workbook写出,然后合并。但我合并的时候发现数据耗费比直接生成更大。不知道哪位有好的算法,请不吝赐教。
如果不采取多个文件合并的做法,有好的实现方法也可以。
jxl最新版也不支持2007以上,每个sheet支持最大65536条记录,已经被客户否定。 --------------------编程问答-------------------- 1加大java的内存
2 1不行的话就分批处理
3 2 不行的话就得换开源软件了啊 jacob直接用微软的东西处理
4 3 不行 就得吧数据导出到数据库excel有这个功能 处理完了在输出到excel........
你要还是不好时也可以等楼下高见呵呵 --------------------编程问答-------------------- 已经被客户否定。 刚刚没注意到这个 你是要求实时的啊? --------------------编程问答--------------------
呵呵,是JXL10万条记录要写入多个Sheet,这种做法客户不同意,要求只写入一个Sheet. --------------------编程问答-------------------- 我现在和你的问题一样 已经搞了一个月了 没什么好方向
给你一下我的研究方向 希望对你有启发
因为我的客户要求 excel2007 而且对单元格有格式处理 还要添加图片 还要大数据量(单sheet100w)。。。 很无敌的要求
下述方法不适合我的 可能会有帮助你的:
第一种格式,CSV,最简单的,格式最差,最基本的行列,不能合并,不能设置着色,
第二种,HTML格式的,如:"<TABLE>....</TABLE>"这样的文本,后辍名改为XLS就可以了,可以设置跨行列的合并,可以着色,图片没试过,估计是可以的,还可以设置单元格对齐,单元格的格式等,
第二种只能excel2003 不能2007 所有转化成2003 又有了数量限制
第三种,如果你没有格式上的要求 可以用java本身二进制流的方式 我试验过 速度极快 ,
可惜不知道如何设置颜色和图片 易做图放弃
现在我们的最新方案是用 ole操作excel 微软本身的东西自己调用自己了 呵呵 不过这样会造成平台相关性 ,也就是不能在windows外的平台使用
如果你有了解决方案希望不吝赐教给我 发布上来
希望我的这点建议能对你有帮助 --------------------编程问答--------------------
呵呵,客户的PC能打开这类文件不、 --------------------编程问答--------------------
1.。 调大JVM内存
2.。 还不行的话,跟客户沟通,分类导出成多个excel文件处理。 --------------------编程问答-------------------- 回复楼上的 客户已经内存6G jvm调大到5G 依然内存溢出。。。。
无奈呀 数据量还是太大。。 能分多个excel我就不这么伤心了 搞这么多方案出来都不行。。 --------------------编程问答--------------------
同是天涯沦落人!我也搞了快一个月了,都没搞好! --------------------编程问答-------------------- 又多了个沦落人。 --------------------编程问答-------------------- 我也来了,悲剧 --------------------编程问答-------------------- 顶顶。目前我遇到这样的客户需求是直接否定的。 看看是否有牛人有好的解决方案。 --------------------编程问答-------------------- 用jacob,调用Excel的宏做。 (这样就不能夸平台了,并且服务器测要装Excel)
先写个Excel的宏,试试看能处理那么大数据不?
能得话,java那里输出个中间文件,然后让Excel的宏去往Excel写数据。
补充:Java , Java相关