yeahzy
주말에 몰아쓰는 개발일기
yeahzy
전체 방문자
오늘
어제
  • 분류 전체보기 (22)
    • 주말에 쓰는 개발일기 (20)
      • javascript (10)
      • java (1)
      • react-native (5)
      • react (2)
    • 모든 일은 평일에 이루어지지 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • popup에서 부모창 함수 호출
  • javascript opener오류
  • window.opener
  • opener 안될 때
  • next.js기초
  • Ajax
  • javascript
  • showModalDialog
  • 프론트엔드로드맵
  • 크롬개발자도구오류
  • showModalDialog.js
  • 신입개발자로드맵
  • 파일업로드
  • fileupload
  • event.preventDefault()
  • popup opener
  • 크롬 opener
  • Java
  • 개발자역량강화로드맵
  • event.stopPropagation()

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yeahzy

주말에 몰아쓰는 개발일기

주말에 쓰는 개발일기/java

[jasper report] 여러 레포트 파일을 하나의 pdf로 출력

2021. 3. 7. 16:48

exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT_LIST, jprintlist); 의 예시가 많이 나오더라.

하지만 setParameter는 내가 지금 사용하고 있는 6.5.1버전에서는 이미 사라진 함수.

 

exporter.setExporterInput(new SimpleExporterInput(jasperPrintList)); 형식으로 사용해주어야 한다.

 

각 함수에 필요한 타입은 이러하다.

exporter.setExporterInput(ExporterInput exporterInput);

ExporterInput exporterInput = SimpleExporterInput.getInstance(ArrayList<JasperPrint> jasperPrintList);

JasperPrint jasperPrint = JasperFillManager.getInstance(jasperReportsContext).fill(JasperReport jasperReport, new HashMap(), new JRMapCollectionDataSource(ArrayList<Map<String,Object>>);

 

 

jsp에서 출력하고 있기 때문에 모든 변수에 컬렉션과 타입 선언을 정확하게 초기화해주어 사용해야한다.

 

Map paramMap = new HashMap<String,Object>();
paramMap = (Map)request.getAttribute("detaillist"); 
//각 페이지에 필요한 resultSet를 arrayList로 담고, 
//각 arrayList를 페이지별로 detail0 , detail1.. 의 키를 설정하여 HashMap으로 묶어 responce에 담아 리턴함.

List paramList = new ArrayList<Map<String,Object>>(); //dataSource에 들어갈 arrayList

try{ 
            List<JasperPrint> jasperPrintList = new ArrayList<JasperPrint>();

			for(int i = 0 ; i < paramMap.size(); i++){
    				paramList = (List)paramMap.get("detail"+i);
     				dataSource = new JRMapCollectionDataSource(paramList); 
                	//jasper report 파일의 리스트를 담음.
                
     				jasperReport =  JasperCompileManager
                		.compileReport(jasperPath + "/" + report_name + "_"  + i + ".jrxml");
     				jasperPrint =  JasperFillManager.getInstance(jasperReportsContext)
                		.fill(jasperReport, new HashMap(), dataSource);
     				jasperPrintList.add(jasperPrint);
			}

            JRExporter exporter = new JRPdfExporter();
            exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrintList));
			//jasperPrintList를 exportInput에 담음.

            OutputStream output = new FileOutputStream(new File("저장할 파일 위치"));

            exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, output);
            exporter.exportReport();

}catch(Exception e){
           e.printStackTrace();
}

 

    yeahzy
    yeahzy
    주말에 몰아 쓰려고 만들었는데 생각보다 주말은 빠르다..

    티스토리툴바