java使用jxl操作一百万数据到excel中,分sheet写入(一个sheet写五万)。如何避免内存溢出?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java使用jxl操作一百万数据到excel中,分sheet写入(一个sheet写五万)。如何避免内存溢出?相关的知识,希望对你有一定的参考价值。
分页查数据,每写完一个sheet,就存一次档(文件保存到硬盘上),并关闭所有文件操作,主动gc;下一个sheet,重新打开文档,并重复上面一步。
反复重复上面两步,直到你的数据写入完为止。追问
能不能具体点,或者给个事例
追答有倒是有实例,不过涉及太多业务处理,不合适直接给。
大概流程吧。
查询数据库:
queryData(int startIndex)
ResultSet rs = ......;//查询1000行数据
writeData(rs, startIndex/1000);//写数据
queryData(startIndex+1000);//继续查询并写数据
2.写数据:
writeData(ResultSet rs, int sheetIndex)
WritableWorkbook workbook = null;
try
// 创建新的Excel
workbook = Workbook.createWorkbook(.....);
WritableSheet wsheet = workbook.createSheet("sheetname"+sheetIndex, 0);
while(rs.next())
//遍历rs每行写入数据
rs.close();
workbook.write(); // 写入文件
workbook.close();
System.gc();//主动回收内存
catch (xception ex2)
System.out.println("Exception:" + ex2.getMessage());
参考技术A 操作一次清除一次内存吧,需要api函数。追问
如何清除?
参考技术B 好像不能避免,只能通过参数增加内存追问好像是的,谢谢回答!
参考技术C 数据分页写入追问是分页写入,但是要求必须写入一个excel中,这样就必须分sheet写入。在追加的过程中我是创建副本添加,当数据量过大时就会造成内存溢出?
java 使用jxl poi 操作excel
java操作excel 创建、修改 xls 文件
JAVA操作Excel文件
Java生成和操作Excel文件
java导出Excel通用方法
以上是关于java使用jxl操作一百万数据到excel中,分sheet写入(一个sheet写五万)。如何避免内存溢出?的主要内容,如果未能解决你的问题,请参考以下文章