Java用POI导出excel时出现内存不足的问题,测试数据数量为:13万条,已经实现了,每六万条条数据时

,分sheet导出的功能,但是还存在问题,当流中数据量达到三万条左右时,就会报内存不足的错误,无法再执行下面的操作,请提供解决思路!

注:现在测试是在本地进行测试,未到测试服务器上进行测试,虽然服务器性能好,但是估计承受十万条左右的数据时,也会存在部分问题!

本人没分了,要不肯定提供,希望大家多多帮助!!
excel最大行数应该是6万条吧,已经实现了分sheet导出的操作,但是,每次流都得重新打开或者关闭,这样无法将数据存入到同一个excel文件中,麻烦啊,望大家继续提供思路啊!谢谢了啊,呵呵

再次补充下,如果服务器的话,十万条数据量的导出,会不会给服务器给搞挂掉啊??

没办法,运行内存低、机子能开虚拟内存的话可以试试。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-07
你这个问题没有解决办法,有的话得交微软的帮你解决。
excel最大行数就是三万行。
建议:分页导出!
第2个回答  2011-01-07
把表中的数据先放到结果集里呗。

Java用POI导出excel时,内存不足问题
没办法,运行内存低、机子能开虚拟内存的话可以试试。。

POI EXCEL导出时,有些数字出现多余的小数
导出时把数值设成字符串类型的,或者把excel的格式设置下

Java poi导出Excel,小数点后面数据缺失
数据缺失可能是精度问题。没看到具体代码 也不知道。你可以试试 BigDecimal b = new BigDecimal(0).setScale(5),精度可以设大一点,就可以看看。如果不是精度的问题,那具体我就想不到了。POI解析EXCEL 最多的问题就是数据类型的问题。

java用poi导出excel文件,打开导出的文件时报错,怎么办?
import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletResponse;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFRichTextString...

在java中用POI写入Excel的时候报内存溢出,数据量有20万左右,请问有什么...
回答:excel每个sheet最多容纳的行数是65536行,20W就是3个sheet也装不下,你在程序写下判断再新建一个excel。还有别在一个excel写入太多数据,不然打不开。建议写入几个excel表。

java poi导出Excel进度问题
token标签的实现原理是在表单中拉架一个隐藏域,每次加载该页面时,该隐藏域的值都不相同。而TokenInterceptor拦截器则拦截所有用户请求,如果两次请求时该隐藏域的值相同,则阻止表单提交。然后需要你自己写一个拦截器,拦截错误信息,拦截下来之后给出的提示语句就可以你自己定了比如“当前页面正在提交过程中...

java导出excel生成下拉框时报错,有哪些原因?
需注意问题3: 环境差异 本地、测试与生产环境在代码一致的情况下,可能因服务器响应时间差异导致导出错误,检查Nginx与负载均衡设置。需注意问题4: 写入数据失败 确保在使用workbook.write方法时,输出流正确且无冲突,避免使用不同类型的流导致数据无法正确写入。需注意问题5: POI错误 OpenXML4JRuntime...

java 使用POI3.7 HSSF 报表导出内存溢出问题
这个主要是excel表格版本的问题2003是有限制的65535,用2007的能导一百万数据,不过内存需要适当的设置大点

poi导出excel时数据大于6W如何新建一个sheet(JAVA)
如果你能够正确的导出excel,说明你已经掌握了excel的操作。我提供一种思路供你参考:判断你要导出数据的行数,以6万为基数,进行程序判断。可以通过循环的方式,计算出需要的sheet数量,每次循环建立一个sheet,然后把数据导入。关键的问题在于创建新的sheet和,计算导出的数据。希望对你有所帮助吧。

POI 写入EXCEL时出现问题
这和数据库没有关系 因为setCellValue方法的参数是有double,boolean,string等,而你传进去的是float,他会把你的float转换成double,转的时候有问题。如果是把float a=4444.4443f;直接弄成变量打印,也会出现这种情况。可以这样做改成 Float a=4444.4443f;cell.setCellValue(a.toString());测试通过 ...

相似回答