论坛首页 Java企业应用论坛

解决大批量数据导出Excel产生内存溢出的方案

浏览 39743 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2008-10-29  
szhnet 写道
能不能导一部分先保存一下文件,然后再追加

不行,poi和jxl一样,会吧原先保存的都读到内存中。
0 请登录后投票
   发表时间:2008-10-31  
是呀,我以前也想当然地以为先生成一个文件,然后往里面追加就行了,可实际上一操作才发现,POI确实是先把以前的EXCEL数据读入内存的,其实和直接导出一个样子了
cats_tiger这个方案不错,我现在正在处理这种大数据的情况,想了很多办法,比如直接若干个文件打包下载,或让DB在数据库中生成等,可是都不符合需要,后来想生成多个文件能否直接合并成一个呢?于是开始查这方面的资料,看到老兄的文章,很有启发!
呵呵,我打算参考一下兄弟的程序来写我现在的功能,谢了!
0 请登录后投票
   发表时间:2008-10-31  
直接用dsoframer,页面上就是excel,纯正的excel
不需要导出,调用另存就成了。
0 请登录后投票
   发表时间:2008-11-03  
kimmking 写道

直接用dsoframer,页面上就是excel,纯正的excel
不需要导出,调用另存就成了。

能处理多少数据呢?我们的要求是50万行每行20多列。
0 请登录后投票
   发表时间:2008-11-07   最后修改:2008-11-07
楼主的方法不错,值得参考。我以前也遇到过这样的问题。经常内存溢出,后来也是生成N个文件,再打成一个rar包让客户下载,不过就是没有合并成一个excel文件
0 请登录后投票
   发表时间:2008-11-08  
真是变态。那么多数据导出来干什么? 不可能看吧。应该是数据共享使用来导入其他系统吧。

我以前就是xml的格式扩展名改成xls来做的。没有碰到这种变态客户。
0 请登录后投票
   发表时间:2008-11-21  
- -两段代码都编译不过...
InputStream stream = poifs.getRoot().createDocumentInputStream("Workbook");
这个没找到createDocumentInputStream这个方法
0 请登录后投票
   发表时间:2008-11-26  
reci 写道

- -两段代码都编译不过...InputStream stream = poifs.getRoot().createDocumentInputStream("Workbook");这个没找到createDocumentInputStream这个方法

我用的是poi3.1
0 请登录后投票
   发表时间:2008-12-09  
是不是可以考虑  用追加你EXCEL工作表单来作呢 sheet追加的方式。我不知道POI有没有这个功能。如果有你可以现把数据分散放在sheet 0  1 2 3 4 5 6中。
不要意思POI不了解。胡乱说的,不过看你的代码内存构建是从sheet开始的。
还有一点建议,代码要重构了,维护起来难度太大。
0 请登录后投票
   发表时间:2008-12-15  
请问你用的是哪个版本的poi
0 请登录后投票
论坛首页 Java企业应用版

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