SPRING + JASPERREPORT ) MULTIPLE DATASOURCE / SUBREPORT,TABLE,LIST (2)

북마크 추가

1번이 끝났으면 2번은 스프링에 적용하는 방법이다.

 

1번에서 만든  jrxml을 컴파일 하여 .jasper 파일을 만든다.

 

word.jrxml 이었으면 word.jasper 파일이 나올것이다.

 

1. .jasper파일을 WEB-INF/classes 폴더 또는 src/main/resources 폴더 안에 넣는다.

 

 

 


2. controller 작성

 

@RequestMapping(value = "/reports/download",method = RequestMethod.POST)

public ModelAndView download(HttpServletRequest request)

throws Exception {

ArrayList<ResumeVO> list = new ArrayList<ResumeVO>();

list = resumeDAOService.selectMemberInfo(memSeq);

//리스트에 쿼리를 돌려 각자 사용할 데이터를 담는다. list = 리포트 쿼리

     ArrayList<ResumeVO> list2 = new ArrayList<ResumeVO>();

list2 = resumeDAOService.selectSkills(list.get(0).getResumeSeq());

// list2 = sub dataset 에서 설정한 쿼리.


//list에 담을때 주의할 점은 ireport에 설정한 필드명이과 쿼리의 컬럼이 일치해야됨 


URL location = getClass().getResource("/words.jasper");  // .jasper 파일 경로 불러오기

 

String reportPath = location.getPath();       // .jasper 파일 경로 저장

JRBeanCollectionDataSource src = new JRBeanCollectionDataSource(list,false);      // 리포트 메인 쿼리의 값을 담을 데이터 소스

JRBeanCollectionDataSource src2 = new JRBeanCollectionDataSource(list2,false);    // sub dataset 쿼리 값을 담을 데이터 소스

Map<String,Object> parameters = new HashMap<String,Object>();

parameters.put("datasource", src);

parameters.put("subdata", src2);           // 1장에서 설정한 dataset 이름과 같아야됨

JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, parameters,src);

HttpSession session = request.getSession();

String path = session.getServletContext().getRealPath("")+"/resources/download/resume/";    // 이력서의 저장 경로

JRDocxExporter exporter = new JRDocxExporter();  //워드로 저장하기 위해 JRDocxExporter 사용

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "이력서.docx");

exporter.exportReport(); // 워드로 내보낸다

return DownloadController("이력서.docx");     // 저장 후 바로 다운로드를 위해서 downloadController로 넘김 이 컨트롤러는 예전에 한 정리에 있음

 

 

public ModelAndView DownloadController(String path) throws UnsupportedEncodingException {

File file = new File(path);

return new ModelAndView("download", "downloadFile", file);

}

 

 

Download 세팅은 

 

http://trandent.com/board/iReport/detail/240 

 

여기서 1,3번을 보면 됩니다.

 

 

AD
관리자
2015-11-27 15:54
SHARE