论坛首页 Java企业应用论坛

excel的大数据量用POI读取

浏览 6260 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-03-31  
昨天刚解决了POI的大数据量写,今天又碰到一个问题,客户把50万的数据用excel传了过来T.T
普通的读取依然会OOM

无奈继续查资料。记得看到一篇文章上说XSSF默认用DOM解析XML的,那必然会OOM了,于是开始找用SAX读的例子,找到了应该比较经典的FromHowTo.java(http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/examples/FromHowTo.java)

用这个例子还是碰到了挺多问题
1. 写入的逻辑会嵌入到这个读取里..它并没有提供比较友好的getRow之类的一行一行处理的方法..导致我的代码写地很猥琐..
2. SharedStringsTable sst = r.getSharedStringsTable();这段代码依然会抛OOM. 看提问频道有一个哥们也碰到了同样的问题..都已经用SAX解析了还是OOM是挺尴尬的..目前的解决方法是开大了一些内存..- -..简单有效..基本上代码跑过了这行以后的读取就不怕OOM了..
   发表时间:2011-04-02  
我认为excel大数据量的读写是很糟糕的设计
0 请登录后投票
   发表时间:2011-04-02  
客户把50万的数据用excel传了过来,excel不是有65535条数限制吗,50万是怎么弄出来的。
0 请登录后投票
   发表时间:2011-04-02  
albb0608 写道
客户把50万的数据用excel传了过来,excel不是有65535条数限制吗,50万是怎么弄出来的。

office2007没有这个限制了。

可以直接把xlsx文件当zip解压出来xml文件自行处理。
0 请登录后投票
   发表时间:2011-04-02  
他能写出来你就可以读出来,建议直接解析binary协议
0 请登录后投票
   发表时间:2011-04-02  
yangyi 写道
他能写出来你就可以读出来,建议直接解析binary协议

office 97-2003是biff8的二进制格式

2007+是ooxml的文本格式
0 请登录后投票
   发表时间:2011-04-04  
我最近也在搞这样的问题 我们还没有一个固定的excel上传模板 列的内容是一定的 但顺序不一定 现在没什么好的思路啊
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics