====== 엑셀 가이드====== 엑셀 컴포넌트는 엑셀 파일/데이터 처리 기능을 제공한다. 엑셀 컴포넌트는 setselectsheet API로 지정한 시트를 대상으로 데이터를 처리한다. [주요 기능] 새로운 엑셀 데이터 생성 및 파일 저장 엑셀 파일 로드 및 특정 셀 값 읽기/쓰기 및 파일 저장(로드한 엑셀 파일 서식 및 데이터 유지) DRM 처리를 위한 서버 연동 엑셀 파일 업로드/다운로드 처리 [용어 정의] 워크북 - 엑셀 데이터를 저장하기 위한 가장 최상위 단위 시트 - 엑셀 워크북 내부에 엑셀 데이터를 저장하기 위한 그룹 셀 - 엑셀 워크북의 특정 엑셀 시트의 특정 데이터를 저장하기 위한 단위 (엑셀 형식의 셀 주소 접근) ===== 예시 ===== 템플릿 위치: /HTML5/COMPONENT/EXCEL/excel_basic 템플릿 파일 * [[xf5projecthome>template/screen/HTML5/COMPONENT/EXCEL/excel_basic.xml|excel_basic.xml]] * [[xf5projecthome>template/screen/HTML5/COMPONENT/EXCEL/excel_basic.js|excel_basic.js]] * [[xf5projecthome>template/template.html?xframe_screen_url=/HTML5/COMPONENT/EXCEL/excel_basic|새창으로 실행]] echo ''; echo ''; echo ''; ==== 화면 스크립트 ==== function screen_on_load() { } // 엑셀 파일 내 모든 시트의 모든 데이터 내용을 콘손에 출력 function PrintExcelData(obj_excel) { var sheet_index, sheet_count, row_index, row_count, column_index, column_count; // 엑셀 시트 갯수를 구함 sheet_count = obj_excel.getsheetcount(); factory.consoleprint("sheet_count = " + sheet_count); // 시트 Loop for (sheet_index = 0; sheet_index < sheet_count; sheet_index++) { // 작업 대상 시트 설정 obj_excel.setselectsheet(sheet_index); // 행/열 갯수를 구함 row_count = obj_excel.getrowcount(); column_count = obj_excel.getcolumncount(); factory.consoleprint("row_count = " + row_count); factory.consoleprint("column_count = " + column_count); // 시트내 모든 아이템에 대한 값을 로깅 for (row_index = 0; row_index < row_count; row_index++) { for (column_index = 0; column_index < column_count; column_index++) { factory.consoleprint(sheet_index + ":" + row_index + ":" + column_index + " = " + obj_excel.getcellvalue(obj_excel.getcelladdr(row_index, column_index))); } } } } /** * selectfile API를 통한 로컬 파일 선택 이벤트 * * @param objInst 엑셀 컴포넌트 인스턴스 * @param objFile 선택한 파일에 대한 HTML File 오브젝트 */ function excel_on_selectfile(objInst, objFile) { // HTML File 오브젝트를 통해서 엑셀 데이터 로드 obj_excel.loadfileobject(objFile); // 서버를 통해서 EXCEL 파일 업로드 // obj_excel.uploafileobject(objFile); } /** * 엑셀 파일 데이터 로드 시작 이벤트 * * @param objInst 엑셀 컴포넌트 인스턴스 * @param strFileName 파일 이름 */ function excel_on_loadstart(objInst, strFileName) { } /** * 엑셀 데이터 파일 저장 시작 이벤트 * * @param objInst 엑셀 컴포넌트 인스턴스 * @param strFileName 파일 이름 */ function excel_on_savestart(objInst, strFileName) { } /** * 엑셀 데이터를 로컬에 파일로 저장 완료 이벤트 * * @param objInst 엑셀 컴포넌트 인스턴스 * @param nResult 처리 결과 (1:성공, 그외 오류) * @param strErrCode 에러 코드 * @param strErrMsg 에러 메시지 * @param strFileName 파일 이름 * @param nStartTime 처리 시작 시각 * @param nEndTime 처리 완료 시각 */ function excel_on_save(objInst, nResult, strCode, strMsg, strFileName, nStartTime, nEndTime) { } /** * 엑셀 파일 데이터 로드 완료 이벤트 * * @param objInst 엑셀 컴포넌트 인스턴스 * @param nResult 로드 처리 결과 (1 - 성공, 그외 오류) * @param strCode 오류 코드 * @param strMsg 오류 메시지 * @param nStartTime 처리 시작 시각 * @param nEndTime 처리 종료 시각 */ function excel_on_load(objInst, nResult, strCode, strMsg, strFileName, nStartTime, nEndTime) { // 엑셀 데이터 전체 내용을 구하여 로깅 PrintExcelData(obj_excel); } // "selectfile" 버튼 이벤트 function btn_selectfile_on_click(objInst) { // 로드 대상 파일 선택 // 처리 완료시 "on_selectfile" 이벤트 발생하며, // 선택한 파일에 대한 HTML File 오브젝트가 전달되며, // 전달된 파일 오브젝트를 loadfileobject API를 통해서 로드 obj_excel.selectfile(); } // "savefile" 버튼 이벤트 function btn_savefile_on_click(objInst) { // 엑셀 데이터를 바로 파일로 저장 obj_excel.savefile("save.xlsx"); } // "createworkbook" 버튼 이벤트 function btn_createworkbook_on_click(objInst) { // 새로운 워크북 생성 (기존 데이터는 삭제됨) obj_excel.createworkbook(); } // "addsheet" 버튼 이벤트 function btn_addsheet_on_click(objInst) { // 새로운 시트 추가 obj_excel.addsheet("Sheet Name"); // 시트 개수를 구함 screen.alert("Sheet Count = " + obj_excel.getsheetcount()); } // "setselectsheet" 버튼 이벤트 function btn_setselectsheet_on_click(objInst) { // 작업 대상 시트 인덱스 설정 obj_excel.setselectsheet(0); } // "setcellvalue" 버튼 이벤트 function btn_setcellvalue_on_click(objInst) { // 현재 작업 대상 시트에 값 설정 (0행 0열) obj_excel.setcellvalue(0, 0, "A1 VALUE"); obj_excel.setcellvaluebyaddr(obj_excel.getcelladdr(0, 0), "A1 VALUE"); // 현재 작업 대상 시트에 값 설정 (0행 1열) obj_excel.setcellvaluebyaddr("B1", "B1 VALUE"); } // "getcellvalue" 버튼 이벤트 function btn_getcellvalue_on_click(objInst) { // 현재 작업 대상 시트에 값 읽기 (0행 0열) screen.alert(obj_excel.getcellvalue(0, 0)); // Zero-Based 행/열 인덱스를 통해 셀 값 일기 (0행 0열 -> "A1") screen.alert(obj_excel.getcellvaluebyaddr(obj_excel.getcelladdr(0, 0))); } // "uploadfile" 버튼 이벤트 function btn_uploadfile_on_click(objInst) { // HTML File 오브젝트와 데이터를 서버로 송신하고, 수신된 엑셀 파일 데이터를 로드 // 처리 완료시 "on_load" 이벤트 발생 obj_excel.uploadfile(null, "http://127.0.0.1/multisheet.xlsx"); } // "savefileobject" 버튼 이벤트 function btn_savefileobject_on_click(objInst) { // 엑셀 데이터를 HTML File 오브젝트 행텨로 저장 // 처리 완료시 "on_savefile" 이벤트를 통해서 저장된 HTML File 오브젝트가 전달되며, // 전달된 파일 오브젝트를 downloadfile API를 통해서 저장 가능 obj_excel.savefileobject("save.xlsx"); } /** * 엑셀 데이터를 HTML 파일 오브젝트 형태로 저장 완료 이벤트 * * @param objInst 엑셀 컴포넌트 인스턴스 * @param nResult 처리 결과 (1:성공, 그외 오류) * @param strCode 에러 코드 * @param strMsg 에러 메시지 * @param strFileName 파일 이름 * @param objFile HTML 파일 오브젝트 * @param nStartTime 처리 시작 시각 * @param nEndTime 처리 완료 시각 */ function excel_on_savefile(objInst, nResult, strCode, strMsg, strFileName, objFile, nStartTime, nEndTime) { // HTML File 오브젝트 및 데이터를 서버로 송신하고, 수신된 데이터를 파일로 저장 // 처리 완료시 "on_save" 이벤트 발생 obj_excel.downloadfile(objFile, "http://127.0.0.1/multisheet.xlsx"); }