从java结果集重写excel(.xlsm)文件时,45k记录后性能下降

从java结果集重写excel(.xlsm)文件时,45k记录后性能下降,java,sql-server,apache-poi,resultset,xlsm,Java,Sql Server,Apache Poi,Resultset,Xlsm,此代码适用于35k以下的记录,并在工作表上写入数据,但如果记录存在,则45k性能会降低,并且不会出现任何异常或错误, 并且不创建任何文件 我如何克服这个问题 public void dbConnect(String driver_connect_string, String db_connect_string, String db_userid, String db_password){ try{ //database connectivity St

此代码适用于35k以下的记录,并在工作表上写入数据,但如果记录存在,则45k性能会降低,并且不会出现任何异常或错误, 并且不创建任何文件

我如何克服这个问题

public void dbConnect(String driver_connect_string, String db_connect_string, String db_userid, String db_password){
    try{ 

        //database connectivity

        Statement statement = conn.createStatement();

        String queryString = propq.getProperty("Query");
        ResultSet rs = statement.executeQuery(queryString);


        OPCPackage pkg = OPCPackage.open(new File(("sourceFile")));
         XSSFWorkbook wb_template;
         wb_template = new XSSFWorkbook(pkg);
         System.out.println("package loaded");

         Sheet  sheet = wb_template.getSheetAt(0);
         Row row = null;
         int index = 1;
         while (rs.next()) {
             try{
              row = sheet.createRow(index);
              row.createCell(0).setCellValue(rs.getString(1));    
              row.createCell(1).setCellValue(rs.getString(2));    
              row.createCell(2).setCellValue(rs.getString(3)); 
              .
              .
              row.createCell(23).setCellValue(rs.getString(25));

              System.out.println(index);

             }
             catch(Exception e){
                 System.out.println(e);
             }
              index++;
          }

         FileOutputStream out = new FileOutputStream(new File(("destFile")));
         wb_template.write(out);
         out.flush();
         out.close();  

    }catch(Exception e){
        e.printStackTrace();
    }
}

查看此答案此处代码中的问题是什么,您的评论地址中的答案是什么?