본문 바로가기

Excel4

POI #3 [XSSFWorkbook - Memory Leak] Memory Leak 메모리는 프로세스가 종료됨과 동시에 할당된 메모리를 비우지 못하고 점유하고 있는 현상입니다. 결과는 메모리의 한계점에 다다를 수록 OS의 모든 프로세스가 느려지기 시작합니다. POI도 메모리 릭을 무시 할 수 없는데요. 다른건 모르지만 이번 프로젝트를 진행하면서 XSSFWorkbook을 사용할 때마다 메모리 누수가 일어나 원인을 찾느라 고생했습니다. 내용을 보자하면 XSSFWorkbook이 sheet와 하위의 row, cell 등을 파싱할 때에 한 sheet당 최대량이 60mb 정도이며 상위로 가면 라이브러리 내부에서 TreeMap에 나머지 내용을 적재합니다. 이때 close 하면 되잖아? 라고 생각하시겠지만 TreeMap은 이미 저멀리 메모리에서 둥둥 떠다닙니다. 이렇게 쌓이고 쌓.. 2020. 7. 10.
POI #2 [HSSFWorkbook - write & read] HSSFWorkbook 이번엔 POIFSFileSystem에 이어 HSSFWorkbook을 선언하고 OLE 포맷 엑셀을 만들어 보겠습니다. OutputStream outputStream = new FileOutputStream(파일); HSSFWorkbook workbook = new HSSFWorkbook(); //엑셀 시트를 의미 합니다. HSSFSheet sheet = workbook.createSheet("Ole"); //엑셀 한 줄을 의미 합니다. HSSFRow row = sheet.createRow(0); //엑셀 내용이 입력되는 한칸을 의미합니다. HSSFCell cell1 = row.createCell(0); HSSFCell cell2 = row.createCell(1); cell1.set.. 2020. 6. 30.
POI #1 [ POIFSFileSystem vs OPCPackage ] OLE와 OOXML 문서 표준 규격에 따르면 여러가지 문서들이 즐비해 있겠지만 가장 많은 비중을 차지하는 두가지 포맷에 (OLE와 OOXML) 관련하여 정리하겠습니다. POI에서 위에 명시된 두개의 파일 포맷을 읽어 들이기 위해서 사용하는 두가지 라이브러리가 있는데요. OLE (97~2003) - POIFSFileSystem OOXML - OPCPackage 크게 두개로 나뉘고 OLE의 Stream을 읽어 들인다와 OOXML 내부의 xml + 여러 파일을 읽어 들이는데 차이가 있습니다. 그러면 내부를 좀 더 살펴 보겠습니다. 두개 파일의 차이점이 확연히 들어납니다. 어떻게 보면 OLE 파일이 더 간단한것 같지만 위에서와 같이 하드디스크 용량을 따진다면 OOXML이 더 효율적일 것 입니다. 왼쪽에 나타나는.. 2020. 6. 29.
POI #0 Java에서 ms계열 혹은 hwp 파일 등을 읽어 들일때 파서를 많이 찾으시는데요. 대표적으로 POI 라이브러리를 사용해서 파싱을 할 수 있습니다. Apache에서 관리하는 무료 라이브러리이며 현재 4.1 버전이 최신으로 업데이트 되어 있습니다. 간단하게 Excel파일을 만들거나 여러가지 문서를 읽어 들일때 사용하면 됩니다. 주로 OLE 포맷이나 OOXML 파일 포맷들을 읽어 들일때 ms 포맷 말고 여러가지 포맷등도 지원합니다. 2020. 6. 26.