2013-07-16 3 views
4

1 백만 행을 쓰려고하는데 Java를 사용하여 파일을 Excel로 보내려고합니다 (xls 또는 xlsx를 만들어야 함).1 백만 레코드를 Excel 파일에 쓰기

Jxl과 POI 모두 메모리 내 API 인 것 같습니다. 즉, api는 한 번에 메모리에 1 백만 행의 전체 파일을 갖습니다. 이것은 결국 Java 힙 공간을 소비하게됩니다. 어떻게 레코드를 Excel 파일로 읽을 수 있습니까? 미리 감사드립니다.

+4

이 경우 Excel이 설계되지 않았습니다. CSV 파일로 내보내기해야합니다. 그러한 제한은 없습니다. –

답변

3

apache-poi는 streaming api이며 큰 데이터로 작업 할 수 있습니다. 나는 그것을 500k까지 사용했다. 백만 분의 일로 당신을 위해 일할 수도 있습니다.

+1

참고 : POI 스트리밍 API는 쓰기 전용입니다. – user456584

1

JExcel은 모든 데이터를 메모리에 저장하는 대신 임시 파일을 사용하여 Excel 파일을 작성할 수 있습니다. 다음 코드로 활성화 할 수 있습니다.

WorkbookSettings settings = new WorkbookSettings(); 
settings.setGCDisabled(true); 
settings.setUseTemporaryFileDuringWrite(true); 
settings.setTemporaryFileDuringWriteDirectory(tmpDir); 
Workbook wb = Workbook.createWorkbook(os, settings); 
관련 문제