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 例外が発生します。メモリの問題なしにシートを削除するにはどうすればよいですか。