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写五万)。如何避免内存溢出?的主要内容,如果未能解决你的问题,请参考以下文章

使用java程序jxl操作Excel表格

怎么用java程序把excel导入到mysql数据库

Java使用 POI 操作Excel

java 使用jxl poi 操作excel

java中如何讲Excel中的数据导入到Mysql

jxl的使用,从excel插入数据以及读取数据