사용자 도구

사이트 도구


java:poi

Apache POI MS Office Document

Excel

SXSSFWorkbook

  • SXSSFWorkbook를 사용하면 MS Office 2007 OOXML 형태로 엑셀 파일을 생성하며,
  • 생성중 데이터를 임시로 디스크에 기록하는 방식으로 메모리를 아낄 수 있다.
    • 임시 파일로 저장하는 것이지 지정된 OutputStream으로 스트리밍하는 것이 아니다.
  • 임시 저장용 파일을 꼭 SXSSFWorkbook.dispose()를 호출하여 삭제해줘야 한다.

Excel 버전에 무관하게 읽기

Sheet

Column Width

sheet.setColumnWidth(col, charCount * 256); // 넓이 지정하는 값이 문자의 256분의 1을 나타냄.

POI Memory Leak

java.io.DeleteOnExitHook 객체가 잔뜩 생성되면서 Leak 이 되는 현상이 발생한다. 이는 POI 에서 임시로 생성한 파일을 JVM 종료시 삭제하라는 Hook 객체이다.

해결하려면 poi.keep.tmp.files System Property를 설정해주어야 한다. 값은 비워두어도 된다.

System.setProperty("poi.keep.tmp.files", "");

단, 이 경우 임시로 생성한 파일이 삭제가 안되면서 디스크 용량이 증가할 가능성도 있으므로 임시 디렉토리를 잘 설정해줘야 할 것으로 보인다.

참조

java/poi.txt · 마지막으로 수정됨: 2022/09/25 17:52 저자 kwon37xi