개발/산출물(java)
엑셀 POI (SXSSFWorkbook vs XSSFWorkbook)
개발자와코더사이가 PM일까?
2018. 3. 11. 00:00
반응형
프로젝트를 진행하다보니 엑셀 다운로드, 업로드시에 POI를 사용하게 되었습니다.
처음에는 옛날 소스를 아래와 같이 그대로 사용했었는데
Workbook workbook = new XSSFWorkbook();
속도 상에 문제 때문에 아래와 같이 변경 하게 되었습니다.
Workbook workbook = new SXSSFWorkbook();
SXSSFWorkbook 자체가 기본 값으로 100 row가 지나가게 되면 자동으로 메모리에서 디스크로 flush되게 해서 속도를 향상시켰는데
일반적으로 1 ~ 10000 row가 순차적으로 그리는 것은 상관이 없으나 10000개까지 그리고 다시 1 row로가게 되면 sheet에 접근 할 수 없다는 오류가 생깁니다. 그것을 방지하기 위해서는 Workbook workbook = new SXSSFWorkbook(10000);처럼 변경해주면 10000개 이후에 디스크를 flush하기 때문에 첫번째 row로 갈 수 있게 됩니다.
다른 분들이 보면 모르시겠지만 나중에 똑 같은 실수를 하지 않기 위해서 기록 합니다.
행복한 하루 보내세요~~~