목차 | ||||||
---|---|---|---|---|---|---|
|
...
Easy Heading Macro | ||||||
---|---|---|---|---|---|---|
|
학습목표
스크립트를 사용하여 대시보드 객체를 생성한 후, 서버를 경유해서 대시보드를 Export 할 수 있습니다.
1. 대시보드 Export 객체 생성
스크립트를 사용하여 대시보드 객체를 생성할 수 있습니다.
컨트롤 생성
- 대시보드 Export를 사용하기 위한 버튼 컨트롤을 생성합니다.
- UI BOT > BUTTON > BUTTON - 생성한 버튼 컨트롤의 속성을 변경합니다.
- Name : BTN_EXPORT_SEV
- Text : 대시보드 Export (서버용)
- Style > Type : Custom
- BoxStyle : MGT_BUTTON_EX
컨트롤에 클릭 이벤트 연결
- [편집 그룹 > Script Editor]를 클릭하여 스크립트 에디터 창을 활성화합니다.
변수를 선언하고 Matrix.getObject(Name)을 사용하여 컨트롤을 연결합니다.
참고사항 icon false title Discription
...
사용된 JScript
코드 블럭 icon false language js title Script collapse true var CH_DAYS = Matrix.getObject("CH_DAYS"); var CH_RECENT_VISIT = Matrix.getObject("CH_RECENT_VISIT"); var CH_VISIT_AGE = Matrix.getObject("CH_VISIT_AGE"); var CH_VISIT_GENDER = Matrix.getObject("CH_VISIT_GENDER"); var OL_RECENT_VISIT = Matrix.getObject("OL_RECENT_VISIT"); var DG_INT = Matrix.getObject("VS_INTEREST"); var VS_FileName = Matrix.getObject("VS_FileName"); var VS_Golf_Place = Matrix.getObject("VS_GOLF_PLACE"); var VS_DATE = Matrix.getObject("VS_DATE").Value;
...
getObject API
AUD플랫폼의 자체 API로 해당 이름을 가진 컨트롤을 반환합니다.
[Control]getObject
인자 설명 name 컨트롤 이름 - 버튼을 클릭했을 때, 이벤트를 활성화하기 위해 [OnButtonClick] 이벤트를 호출합니다.
[OnButtonClick] 이벤트를 호출했을 때, 대시보드의 컴포넌트를 받아서 Export 할 객체를 생성합니다.
참고사항 icon false title Discription
...
사용된 JScript
코드 블럭 icon false language js title Script collapse true /************************************** * 버튼 컨트롤이 클릭되는 시점에 발생합니다. * * arguments : * string Id (Readonly:False) : 컨트롤이름 * string Text (Readonly:False) : 라벨 값 **************************************/ var OnButtonClick = function(sender, args){ //Export 컴포넌트 생성 var WORKBOOK = { "FontName": "맑은 고딕" //Export할 파일의 폰트 , "FontSize" : 11 //Export할 파일의 폰트 사이즈 , "FontColor" : "Black" //Export할 파일의 폰트 색상 , "WorkSheets": [ { "Name":"Sheet1" //Export할 파일 시트(엑셀 Export시) , "DisplayGridlines":"false" //Export할 파일 시트 가이드 라인 표시 여부 ,"Ranges": [ //Export할 파일 문자열에 대한 위치 지정 {"Range":"B1","Value": "보고서 명 : " + Matrix.GetReportInfo().NAME} , {"Range":"B2","Value": "■ 기준일 : " + VS_DATE} , {"Range":"B3","Value": "■ 골프장 :" + VS_Golf_Place.Text} , {"Range":"B5" ,"Value": "골프장 방문자 분석"} , {"Range":"B7","Value": "요일별/시간대별 방문자 수"} , {"Range":"J7","Value": "최근 6개월 간 방문자 수"} , {"Range":"B25","Value": "방문자 연령대 분석"} , {"Range":"G25","Value": "방문자 성비 분석"} , {"Range":"M25","Value": "방문자 관심사 리스트"} ] , "Controls": [ //Export할 컴포넌트 { "Name": DG_INT.Name, "Range": "M26"} //List-Grid 컴포넌트 , { "Name": CH_DAYS.Name, "Range": "B8:I22", "ImageExport": true } //Chart 컴포넌트 , { "Name": CH_RECENT_VISIT.Name, "Range": "M8:Q23", "ImageExport": true } //Chart 컴포넌트 , { "Name": CH_VISIT_AGE.Name, "Range": "B26:F35", "ImageExport": true } //Chart 컴포넌트 , { "Name": CH_VISIT_GENDER.Name, "Range": "G25:L35" , "ImageExport": true } //Chart 컴포넌트 , { "Name": OL_RECENT_VISIT.Name, "Range": "J8"} //Olap-Grid 컴포넌트 ] } ] }; };
...
대시보드 객체 생성 Tip
대시보드로 내보낼 파일을 스크립트로 제작할 때, 주의해야 할 점들이 있습니다.
- 모든 컴포넌트가 WORKBOOK에 생성되는 것은 아닙니다(List-Grid, Olap-Grid, Chart, Image 컴포넌트 가능)
=> 캘린더 값이나 라벨 값 등 컴포넌트 상의 문자 정보가 필요한 경우는 변수로 받거나 직접 타이핑하여 Range 객체 안에 넣어줍니다.
=> 문자 정보는 Range. 컴포넌트 정보는 Control에 입력합니다.
- 컴포넌트에 따라 객체에 넣는 조건이 다릅니다.
컴포넌트 범위 예시 ImageExport
List-Grid 특정 셀 B2
false Olap-Grid 특정 셀 D3
false Chart 셀 범위 B26:F35
true
Image 셀 범위 M8:Q23
true
- DataGrid, OlapGrid의 페이징 혹은 스크롤 사용 시, Export 된 파일에서는 구현이 불가능하기 때문에 대시보드 상에 뿌려진 모든 데이터가 출력됩니다.
=> DataGrid, OlapGrid 아래에 다른 컴포넌트가 있을 시, 데이터의 로우를 계산하여 그 범위 아래에 나타내는 식으로 제작하여야 합니다.
Ex)
2. 대시보드 Export
Export API 연결
생성한 객체를 사용하여 Export를 실행하는 스크립트를 작성하고 [저장] 버튼을 클릭하여 스크립트를 저장합니다.
참고사항 icon false title Discription
...
사용된 JScript
코드 블럭 icon false language js title Script collapse true /************************************** * 버튼 컨트롤이 클릭되는 시점에 발생합니다. * * arguments : * string Id (Readonly:False) : 컨트롤이름 * string Text (Readonly:False) : 라벨 값 **************************************/ var OnButtonClick = function(sender, args){ //Export 컴포넌트 생성 var WORKBOOK = { "FontName": "맑은 고딕" //Export할 파일의 폰트 , "FontSize" : 11 //Export할 파일의 폰트 사이즈 , "FontColor" : "Black" //Export할 파일의 폰트 색상 , "WorkSheets": [ { "Name":"Sheet1" //Export할 파일 시트(엑셀 Export시) , "DisplayGridlines":"false" //Export할 파일 시트 가이드 라인 표시 여부 ,"Ranges": [ //Export할 파일 문자열에 대한 위치 지정 {"Range":"B1","Value": "보고서 명 : " + Matrix.GetReportInfo().NAME} , {"Range":"B2","Value": "■ 기준일 : " + VS_DATE} , {"Range":"B3","Value": "■ 골프장 :" + VS_Golf_Place.Text} , {"Range":"B5" ,"Value": "골프장 방문자 분석"} , {"Range":"B7","Value": "요일별/시간대별 방문자 수"} , {"Range":"J7","Value": "최근 6개월 간 방문자 수"} , {"Range":"B25","Value": "방문자 연령대 분석"} , {"Range":"G25","Value": "방문자 성비 분석"} , {"Range":"M25","Value": "방문자 관심사 리스트"} ] , "Controls": [ //Export할 컴포넌트 { "Name": DG_INT.Name, "Range": "M26"} //List-Grid 컴포넌트 , { "Name": CH_DAYS.Name, "Range": "B8:I22", "ImageExport": true } //Chart 컴포넌트 , { "Name": CH_RECENT_VISIT.Name, "Range": "M8:Q23", "ImageExport": true } //Chart 컴포넌트 , { "Name": CH_VISIT_AGE.Name, "Range": "B26:F35", "ImageExport": true } //Chart 컴포넌트 , { "Name": CH_VISIT_GENDER.Name, "Range": "G25:L35" , "ImageExport": true } //Chart 컴포넌트 , { "Name": OL_RECENT_VISIT.Name, "Range": "J8"} //Olap-Grid 컴포넌트 ] } ] }; if(args.Id == "BTN_EXPORT_SEV"){ Matrix.ExcelExportServiceCall(WORKBOOK ,null ,function(e){ if(e.Success == false){ alert("export fail" + e.Message); return; } var row = e.DataSet.GetTable(0).GetRow(0); var folderName = row.GetValue("FolderName"); var fileName = row.GetValue("FileName"); Matrix.AddGlobalParams("VS_FileName" ,fileName, 1 ); Matrix.DownloadFile(folderName + "/" , fileName , VS_Golf_Place.Text + "_방문자분석.xlsx", false, null); }); } };
...
ExcelExportServiceCall API
AUD플랫폼의 자체 API로 Json 형태의 데이터를 이용해 데이터 엑셀 내보내기 서비스를 호출합니다.(처리 완료 후 OnServiceCallBack 이벤트가 발생합니다.)
[void]ExcelExportServiceCall :
ExcelExportServiceCall([object] json ,[object[{Key,Value}]] params ,[function] callBack)
인자 설명 json 데이터 엑셀 내보내기 JSON 객체 params 파라미터(parameters) e.g.: [{'Key':'VS_CODE','Value':'100'},{'Key':'VS_NAME', 'Value':'JAMES'}] callBack CallBack함수
...
DownloadFile API
AUD플랫폼의 자체 API로 서버에 저장된 파일을 다운로드 하는 API입니다.
[void]DownloadFile :
DownloadFile([string] path ,[string] fileName ,[string] newFileName ,[boolean] isDelete)
인자 설명 path 다운로드 파일 경로 fileName 다운로드 파일명 newFileName 새로운 파일명 isDelete 파일 삭제 여부 - ExcelExportServiceCall API에 생성한 WORKBOOK 객체를 집어넣어 Excel 파일을 생성하고 서버에 저장한 뒤, DownloadFile API를 사용하여 로컬에 파일을 다운로드 합니다.
- [실행] 버튼을 클릭하고 클릭 이벤트를 연결한 버튼을 클릭합니다.
Export가 정상적으로 작동하는지 확인합니다.
참고사항 icon false title Discription
...
참고사항
- 대시보드를 전체 이미지화해서 내보내는 것이 아니기 때문에 로컬용으로 내보낸 대시보드처럼 전체 이미지로 출력되지 않습니다.
- 내보내기 된 컴포넌트는 원본 크기를 벗어나지는 못합니다.
- 차트나 이미지는 원본 비율에 맞춰서 출력합니다.
- WORKBOOK 객체가 만들어지는 시점이 중요합니다.=> WORKBOOK 객체가 만들어지는 시점이 다를시 조회조건에 따라 변경된 차트가 반영이 안될 수 있습니다.
3. Export 가능한 파일 유형
대시보드를 여러 파일의 유형으로 Export 할 수 있습니다.
Export 파일 유형
API | 파일 확장자 | 설명 |
---|---|---|
ExcelExportServiceCall | xlsx | 데이터 엑셀 내보내기 서비스를 호출합니다. |
WordExportServiceCall | docx | Word 형식으로 다운로드합니다. |
HMLExportServiceCall | hml | 한글(HML) 형식으로 다운로드합니다. |
HTMLExportServiceCall | html | 웹(HTML) 형식으로 다운로드합니다. |
XLSExportServiceCall | xls | Excel 2003 형식으로 다운로드합니다. |
PDFExportServiceCall | PDF3 형식으로 다운로드합니다. |
참고사항 | ||||
---|---|---|---|---|
|
...
주의사항 API를 변경해서 사용 시 새로운 파일명을 부여할 때, 그 API에 맞는 확장자명을 붙여주어야 합니다. Ex)
|
...
참고사항 ExcelExportServiceCall 대신 다른 API를 사용 시, 컴포넌트 위치를 다시 설정해주어야 하는데 셀 주소값을 가지고 있는 Excel과는 다르게 위치를 지정하는 것이 매우 어렵고 많은 수작업이 요구됩니다. |
변경 이력 |
---|