리포트 플러그인

webPonent Grid 2.0 Report Plugin

 웹포넌트 그리드 2.0은 export 플러그인은 제공합니다. 그리드의 내용을 엑셀, PDF, CSV포맷으로 다운을 받을 수 있습니다.

그리드의 모델에서 정보를 추출하여 서버로 보내는 형식의 플러그인입니다. 서버 환경에 종속되지 않으나, coreFRAME환경에서 구현한 프로그램을 기본적으로 제공합니다.

15px2

설치

 Export 플러그인은 아래 파일들이 필요합니다.

클라이언트

  • json2.min.js (그리드의 data모델을 String 타잎으로 변경할때 필요합니다.)
  • lz-string.js (String 타잎으로 변경된 데이터를 서버에 보내기 전에 압축할 때 사용됩니다.)
  • webponent.grid.report.js (Export플러그인 파일입니다.)

서버

  • batik-all-1.7.jar
  • batik-ext-1.6-1.jar (SVG를 JAVA에서 컨트롤하기 위해서 필요 합니다.)
  • poi-3.10-FINAL-20140208.jar (JAVA로 EXCEL파일을 만들기 위해 필요합니다.)
  • poi-ooxml-3.10-FINAL-20140208.jar(JAVA로 EXCEL파일을 만들기 위해 필요합니다.)
  • poi-ooxml-schemas-3.10-FINAL-20140208.jar(JAVA로 EXCEL파일을 만들기 위해 필요합니다.)
  • jxl.jar (JAVA로 EXCEL파일을 만들기 위해 필요합니다.)
  • lzstring4j.jar (클라이언트쪽에서 압축된 데이터를 서버에서 Decode하기 위해 사용 됩니다.)
  • dom4j-1.6.1.jar (XML, XPath and XSLT를 JAVA에서 편하게 사용하기 위한 라이브러리입니다.)
  • xmlbeans-2.3.0.jar (XML을 사용하기 위한 라이브러리 입니다.)

casperjs

 PDF로 Export하기 위해 phantomjs를 기반으로 하는 casperjs라는 Headless Browser를 사용 합니다.

공식사이트에서 인스톨 관련 정보를 얻을 수 있습니다.(http://docs.casperjs.org/en/latest/installation.html).

 casperjs를 전역 환경변수로 지정하면 자바프로그램에서 casperjs를 실행 할 수 있습니다.

coreFrame

 코어프레임에서는 리포트를 위한 프로그램 모듈을 제공합니다.

빈 설정파일은 /WEB-INF/coreframe/service/report경로에 존재하며

자바소스코드는 빌드서버의 webponent프로젝트에서 webponent.jar를 다운 받을 수 있습니다.

데이터 흐름


엑셀 내보내기

 webponent.grid.export.excel API를 이용해서 엑셀로 내보낼 수 있습니다. 엑셀의 Sheet를 이용해서 복수의 그리드를 내보내거나, 다운받을 파일이름, 각 Sheet의 이름을 설정 할 수 있습니다.

 webponent.grid.report.excel

js
 /**
  * 엑셀 내보내기
  * @param  {Grid | Array<Grid>} grids      그래드 객체또는 그리드 객체를 담은 배열
  * @param  {String} fileName   다운받을 파일이름
  * @param  {String | Array<String>} sheetNames 쉬트이름 단일쉬트일경우 문자열로
  *                   							다중 쉬트일경루 문자열을 담은 배열을 받는다
  */
 webponent.grid.report.excel(grids, fileName, sheetNames);

 webponent.grid.export.excel 예제

js
var grid1 = webponent.grid.init(table1, template1);
var grid2 = webponent.grid.init(table2, template2);
 
//하나의 그리드만 내보낼 경우
webponent.grid.report.excel(grid1, '엑셀리포트', '시트명');
 
//엑셀의 Sheet를 이용해서 여러개의 그리드를 내보낼 경우
webponent.grid.report.excel([grid1, grid2], '엑셀리포트', '시트명1', '시트명2');

PDF내보내기

PDF내보내기는 그리드에 붙어있는 스크롤을 제거 한다음에 PDF로 내보냅니다. 이 과정에서 그리드를 한번 destroy시킨 후 다시 그리드를 만들어 주기때문에 그리드 객체를 반환합니다.

webponent.grid.report.pdf

js
/**
 * PDF 내보내기
 * @param  {Grid} grid     그리드 객체
 * @param  {String} fileName 다운받을 파일 이름
 * @return {Grid}          그리드 객체
 */
webponent.grid.report.excel(grid, fileName);

 webponent.grid.report.pdf 예제

js
var grid = webponent.grid.init(table, template);

// 내부적으로 그리드를 지웠다 다시 생성하기 때문에 다른곳에서 grid변수에 접근할수 있도록
// 반환된 그리드를 다시 세팅해줍니다.
grid = webponent.grid.report.pdf(grid, 'PDF리포트');

CSV내보내기

webponent.grid.report.csv

js
/**
 * CSV 내보내기
 * @param  {Grid} grid     그리드 객체
 * @param  {String} fileName 다운받을 파일 이름
 */
webponent.grid.report.csv(grid, fileName);

 webponent.grid.report.pdf 예제

js
var grid = webponent.grid.init(table, template);
webponent.grid.report.csv(grid, 'CSV리포트');