POI API을 사용할 수 있습니다. 우리는 POI API를 사용하여 프로그램에서 큰 Excel 파일로 스트리밍을 성공적으로 구현했습니다. 메모리에 저장되는 행 크기를 낮게 유지하는 것이 중요하며 나머지는 기본적으로 디스크에서 수행됩니다.
또한 SXSSFWorkbook.setCompressTempFiles를 설정하여 임시 XML 파일이 디스크에서 커질 수 없도록 방지 할 수 있습니다.
flushRows()를 사용하면 수동으로 행을 디스크로 플러시 할 수 있습니다.
그러나 이것은 느립니다. 그러나 메모리가 유일한 제약 조건이라면.
일부 메소드는 암시 적으로 행에 액세스합니다. 이러한 행이 이미 디스크로 스왑 된 경우 오류가 발생할 것이며 API는 큰 Excel 파일을 작성하기위한 용도로만 사용됩니다.
public static void main(String[] args) throws Throwable {
SXSSFWorkbook wb = new SXSSFWorkbook();
wb.setCompressTempFiles(true);
SXSSFSheet sh = (SXSSFSheet) wb.getSheetAt(0);
sh.setRandomAccessWindowSize(100);// keep 100 rows in memory, exceeding rows will be flushed to disk, this is also the default
for(int i= 1; i < 100000; i++){
Row row = sh.createRow(i); // do something with the row
}
}
[아파치 POI와 초과 GC 오버 헤드 제한]의
가능한 복제 (http://stackoverflow.com/questions/33368612/gc-overhead-limit-exceeded-with-apache-poi) –