2016-09-23 1 views
1

나는 당면한 문제에 직면 해있다. 우리는 사내 시간 관리 시스템을위한 수출 기능을 만들어야합니다. 내보내기 버튼이 있으며 클릭하면 모든 데이터가 엑셀 시트로 내보내집니다.HttpResponse에서 메모리 통합 문서를 여러 개 보내는 방법

사용 사례는 내보낼 데이터에 여러 해 동안 데이터가 포함되어있는 경우 매년마다 별도의 통합 문서를 만들어야한다는 유스 케이스가 있습니다.

여러 통합 문서를 만들 수 있었지만 만든 메모리 내 통합 문서를 HttpResponse 개체로 다시 보내기가 어렵습니다.

나는 ZipOutputStream 솔루션을 사용해 보았지만 ZipEntry 개체에만 실제 파일을 추가 할 수 있다고 판명되었습니다.

모든 유형의 도움을 주시면 감사하겠습니다.

+0

통합 문서를 하나 만들고 연간 한 장을 사용합니까? – Gagravarr

답변

2

나뿐만 아니라 ZipOutputStream이 솔루션을 사용하여 시도하지만 우리는 ZipEntry를 객체에 실제 파일을 추가 할 수있는 것을 알 수있다.

진정한되지 않음 :

ZipOutputStream zos = new ZipOutputStream(...); 
byte[] workBook; //Assign from your POI output 
zos.putNextEntry(new ZipEntry("export-for-2016.xls")); 
zos.write(workBook); 
zos.closeEntry(); 

(선명도 UPDATE) 마지막 세 가지 방법을 사용하면 zip 파일에 개체를 추가하는 데 필요한만큼 여러 번 사용할 수있다 호출합니다.

일반적으로 Apache commons-compress가 더 좋지만, 시작해야합니다.

+0

그러나 이것은 다시 하나의 통합 문서 만 보내 게됩니다. 하나의 ZipOutputStream에 여러 통합 문서를 보내야합니다. –

+1

다시 말하지만 사실이 아닙니다. 위에서 설명한 메서드를 여러 번 호출하여 한 개의 ZipOutputStream에 12 개의 파일을 쓸 수있는 이유가 없습니다. 나는 고객을 위해 이런 종류의 일을 해왔으며 PDF 파일 만 가지고있다. 목표가 HTTP 사양을 위반하는 여러 개의 독립적 인 첨부 파일을 보내는 것을 속이는 것이 아니라면 완벽하게 수행 할 수 있습니다. –

+0

나는 당신이 말하는 것에 동의합니다. 나는 지금 그것을 시험해 보았고 상세한 답변을 주셔서 감사합니다. –

관련 문제