2012-01-16 6 views
0

내 응용 프로그램에서 apache poi 및 JSF 2.0을 사용하여 Excel 형식으로 보고서를 생성합니다.JSF 2.0에서 CSV 파일 생성

코드 Excel을 생성하기 위해 스니핑되었습니다.

final FacesContext facesContext = FacesContext.getCurrentInstance(); 
     final ExternalContext externalContext = facesContext 
       .getExternalContext(); 
     externalContext.setResponseContentType("application/vnd.ms-excel"); 
      externalContext.setResponseHeader("Content-Disposition", 
      "attachment; filename=\"Excel Sample"); 
     workbook.write(externalContext.getResponseOutputStream()); 
     facesContext.responseComplete(); 

당신은 내가 "응용 프로그램/vnd.ms-엑셀"을 추가하고 볼 수 있듯이 - 서버의 MIME 유형입니다. 우리는 MIME 형식을 CSV로 바꿀 수 있는지 궁금해하고 있습니다. 더 이상 보고서 용 Excel 파일을 생성하지 않습니다.

데이터베이스에서 데이터를 가져 와서 HSSF 객체를 사용하여 셀에 쓰는 또 다른 기능이 있습니다. 각 셀에 데이터를 쓴 후에이 메서드 (코드 스 니펫)를 호출합니다. 내가 대신

externalContext.setResponseContentType ("응용 프로그램/vnd.ms-엑셀")를 작성해야 하죠 무엇

;

그래서 확장자가 csv 인 파일을 생성합니다.

+0

당신이 쫓고 복잡 한, 특히, 즉 끝낼 수 있도록 기존 라이브러리를 사용하여 가치가있을 수 있습니다? – Gagravarr

+0

@Gagravarr, 저는 Java를 사용하여 프로그래밍 방식으로 Excel 파일에 쓰고 있습니다. Excel 출력 파일에는 100,000 개의 행이 포함될 수 있습니다. 이로 인해 메모리 부족 예외 문제가 발생할 수 있습니다. 대부분의 모든 기존 Java API가 전체 문서를 RAM에 한꺼번에 작성하려고 시도하고 있습니다. 따라서 우리는 CSV에 직접 데이터를 작성하기로 결정했습니다. mimetype instrcution을 찾고 있는데 CSV를 생성하는 방법은 큰 도움이 될 것입니다. snippet/algo가 도움이 될 수 있습니다. 제 3 자 라이브러리 사용을 자제하고 싶습니다. –

+0

.xls 파일이 아닌 .xlsx 파일을 생성하면 POI의 SXSSF를 사용하여 스트리밍 방식으로 파일을 생성 할 수 있습니다. .xls 파일은 같은 방식으로 생성 할 수 없습니다. 너무 많은 참조가 앞뒤에 형식으로 있습니다. – Gagravarr

답변

1

CSV 파일에 대한 일반적인 MIME 유형은 파일을 생성 할 때, 제대로 값을 인용해야 text/csv

입니다. 를 CSV 파일의 내용을 생성하는 방법에 대한 지침은 CSV에 대한 MIME 형식, 또는 - 그것은 당신이 값

+0

안녕하세요, 답변 주셔서 감사합니다. 그러나 나는 어쩐지 이상한 문제에 직면 해있다. StringBuilder를 사용하여 CSV 파일을 생성 한 후 sb = new StringBuilder(); "sb.append ("hello ") ..... etc etc" 그리고 나서이 작업을 수행하고 있습니다. sb.write (externalContext.getResponseOutputStream()); 어떤 문제가 발생하고 있습니다.이 경우 출력 스트림에 쓰는 방법을 알려주십시오. –

+0

달성 ..... 감사합니다 :) –

1
response.setContentType("text/comma-separated-values; charset=utf8"); 
관련 문제