0

5 枚のシートを持つ POI ライブラリを使用して XLSX ファイルを読み込もうとしています。ファイルのサイズは 5 MB です。すべてのシートの合計レコード数は約 30,000 です。ファイルが読み込まれたら、入力としてのシート名に基づいて、その場で 1 つ以上のシートを削除する必要があります。

これがスニペットです。

 public void generateReportWorkBook(String[] requestedReports) throws Exception {
      // Read the file
      String dailyTicketReport = ReportConstants.REPORT_PATH + ReportConstants.FILE_NAME + ReportConstants.XLSX_FILE_EXTN;

      FileInputStream fis = null;
      XSSFWorkbook book  = null;

      try {
          fis = new FileInputStream(dailyTicketReport);

          book = new XSSFWorkbook(fis);
          for (int i = book.getNumberOfSheets() - 1; i >= 0; i--) {
              XSSFSheet tmpSheet = book.getSheetAt(i);
              if (!ArrayUtils.contains(requestedReports, tmpSheet.getSheetName())) {
                  book.removeSheetAt(i);
              }
          }
      } catch (Exception e) {
          logger.error("Error occured while removing the sheets from workbook");
          throw e;
      } finally {
          IOUtils.closeQuietly(fis);
      }
    }  

プログラムを実行すると。OutofMemory 例外が発生します。メモリの問題なしにシートを削除するにはどうすればよいですか。

4

1 に答える 1