日期:2014-05-18  浏览次数:20715 次

java 大量数据导出为Excel 内存溢出
从数据库中按查询条件一次性获取大量数据,要把这些数据导出为Excel,当前超过8000左右就出现内存溢出,请问如何做到一次性导出5万条左右的数据。
java excel 大量,海量数据导出 内存溢出

------解决方案--------------------
引用:
引用:如果是用poi或者jxl之类的,肯定会内存溢出。
因为,它们都是一次在内存生成整个excel对象。
poi最新版本倒是支持excel2007写临时文件,但是2003不能用。
有一种做法就是不以excel的形式导出,如:Excel另存为XML格式,以此XML为模板,将需要导出的内容拼接为XML字符串按顺序写到一个后缀为xls的文件中。……

简而言之就是拼接符合Excel格式的XML字符串写到一个你想写到的地方,直接response中写到用户浏览器也可以啊。
你随便找个简单的Excel另存为XML,就能理解我说的了。
POI或者JXL的话把服务器内存占满,导死服务器是肯定会发生的,跟数据条数还有字段个数都有关系。如果不对导出请求做并发限制,那结果会更严重。
如果要跟踪内存占用情况的话用jprofile监控下内存,做下代码级优化,但是效果不会改善多少的。