1 백만 행을 쓰려고하는데 Java를 사용하여 파일을 Excel로 보내려고합니다 (xls 또는 xlsx를 만들어야 함).1 백만 레코드를 Excel 파일에 쓰기
Jxl과 POI 모두 메모리 내 API 인 것 같습니다. 즉, api는 한 번에 메모리에 1 백만 행의 전체 파일을 갖습니다. 이것은 결국 Java 힙 공간을 소비하게됩니다. 어떻게 레코드를 Excel 파일로 읽을 수 있습니까? 미리 감사드립니다.
1 백만 행을 쓰려고하는데 Java를 사용하여 파일을 Excel로 보내려고합니다 (xls 또는 xlsx를 만들어야 함).1 백만 레코드를 Excel 파일에 쓰기
Jxl과 POI 모두 메모리 내 API 인 것 같습니다. 즉, api는 한 번에 메모리에 1 백만 행의 전체 파일을 갖습니다. 이것은 결국 Java 힙 공간을 소비하게됩니다. 어떻게 레코드를 Excel 파일로 읽을 수 있습니까? 미리 감사드립니다.
apache-poi는 streaming api이며 큰 데이터로 작업 할 수 있습니다. 나는 그것을 500k까지 사용했다. 백만 분의 일로 당신을 위해 일할 수도 있습니다.
참고 : POI 스트리밍 API는 쓰기 전용입니다. – user456584
JExcel은 모든 데이터를 메모리에 저장하는 대신 임시 파일을 사용하여 Excel 파일을 작성할 수 있습니다. 다음 코드로 활성화 할 수 있습니다.
WorkbookSettings settings = new WorkbookSettings();
settings.setGCDisabled(true);
settings.setUseTemporaryFileDuringWrite(true);
settings.setTemporaryFileDuringWriteDirectory(tmpDir);
Workbook wb = Workbook.createWorkbook(os, settings);
이 경우 Excel이 설계되지 않았습니다. CSV 파일로 내보내기해야합니다. 그러한 제한은 없습니다. –