웹포넌트 그리드 2.0은 export 플러그인은 제공합니다. 그리드의 내용을 엑셀, PDF, CSV포맷으로 다운을 받을 수 있습니다.
그리드의 모델에서 정보를 추출하여 서버로 보내는 형식의 플러그인입니다. 서버 환경에 종속되지 않으나, coreFRAME환경에서 구현한 프로그램을 기본적으로 제공합니다.
Export 플러그인은 아래 파일들이 필요합니다.
PDF로 Export하기 위해 phantomjs를 기반으로 하는 casperjs라는 Headless Browser를 사용 합니다.
공식사이트에서 인스톨 관련 정보를 얻을 수 있습니다.(http://docs.casperjs.org/en/latest/installation.html).
casperjs를 전역 환경변수로 지정하면 자바프로그램에서 casperjs를 실행 할 수 있습니다.
코어프레임에서는 리포트를 위한 프로그램 모듈을 제공합니다.
빈 설정파일은 /WEB-INF/coreframe/service/report경로에 존재하며
자바소스코드는 빌드서버의 webponent프로젝트에서 webponent.jar를 다운 받을 수 있습니다.
webponent.grid.export.excel API를 이용해서 엑셀로 내보낼 수 있습니다. 엑셀의 Sheet를 이용해서 복수의 그리드를 내보내거나, 다운받을 파일이름, 각 Sheet의 이름을 설정 할 수 있습니다.
/** * 엑셀 내보내기 * @param {Grid | Array<Grid>} grids 그래드 객체또는 그리드 객체를 담은 배열 * @param {String} fileName 다운받을 파일이름 * @param {String | Array<String>} sheetNames 쉬트이름 단일쉬트일경우 문자열로 * 다중 쉬트일경루 문자열을 담은 배열을 받는다 */ webponent.grid.report.excel(grids, fileName, sheetNames);
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로 내보냅니다. 이 과정에서 그리드를 한번 destroy시킨 후 다시 그리드를 만들어 주기때문에 그리드 객체를 반환합니다.
/** * PDF 내보내기 * @param {Grid} grid 그리드 객체 * @param {String} fileName 다운받을 파일 이름 * @return {Grid} 그리드 객체 */ webponent.grid.report.excel(grid, fileName);
var grid = webponent.grid.init(table, template); // 내부적으로 그리드를 지웠다 다시 생성하기 때문에 다른곳에서 grid변수에 접근할수 있도록 // 반환된 그리드를 다시 세팅해줍니다. grid = webponent.grid.report.pdf(grid, 'PDF리포트');
/** * CSV 내보내기 * @param {Grid} grid 그리드 객체 * @param {String} fileName 다운받을 파일 이름 */ webponent.grid.report.csv(grid, fileName);
var grid = webponent.grid.init(table, template); webponent.grid.report.csv(grid, 'CSV리포트');