123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[/***************************************************************************************
- * System Name :
- * Job Name :
- * Creator :
- * Make Date : 2017-12-04
- * Description :
- *---------------------------------------------------------------------------------------
- * Modify Date Modifier Modify Description
- *---------------------------------------------------------------------------------------
- * 2017-06-19 Live Converter TF->XP
- *
- *---------------------------------------------------------------------------------------
- ****************************************************************************************/
- //=======================================================================================
- // Function
- //---------------------------------------------------------------------------------------
- /****************************************************************************************
- * Argument : N/A
- * Description : 엑셀파일 업로드
- ****************************************************************************************/
- function misfUploadExcel() {
- var objUploadexcel = frmf_getComponents("grd_uploadexcel");
- var objExcelcol = frmf_getComponents("grd_excelcol");
- var ds_uploadexcel = this.objects[objUploadexcel.binddataset];
- var ds_excelcol = this.objects[objExcelcol.binddataset];
- ds_uploadexcel.clear();
- ds_excelcol.clear();
-
- var fd = new FileDialog;
- var objExt = new ExtCommon();
- var file = fd.open("open", FileDialog.LOAD,"%MYDOCUMENT%");
- var lv_oDs;
- var lv_sDsNm = "ds_importExcel";
- var lv_Ret;
- // var objDsImport = eval(sDsName);
- var lv_nStRow = 0;
- if(file != undefined){
- file.open(VirtualFile.openRead | VirtualFile.openBinary);
- file.close();
- }else{
- return false;
- }
- try{
- lv_oDs = this.all[lv_sDsNm];
- }catch(e){}
-
- if(utlf_isNull(lv_oDs))
- {
- lv_oDs = new Dataset;
- lv_oDs.name = lv_sDsNm;
- this.addChild(lv_sDsNm,lv_oDs);
- }
-
- if(lv_oDs.rowcount > 0) lv_oDs.clear();
-
- objExt.excelImportByIndex(file.fullpath, 0, lv_sDsNm, false, 1, 0, 1);
- if(utlf_isNull(lv_oDs) || lv_oDs.rowcount < 1) return false;
-
- ds_uploadexcel.copyData(lv_oDs);
- var index = 0;
- for(var i = 0; i < ds_uploadexcel.colcount; i++){
- //if(utlf_isNull(ds_uploadexcel.getColumn(0, i))) continue;
- dsf_makeValue(ds_excelcol, "index", "string", index, i);
- dsf_makeValue(ds_excelcol, "name", "string", ds_uploadexcel.getColumn(0, i), index);
-
- objUploadexcel.setCellProperty("head",i,"text",ds_uploadexcel.getColumn(0, i));
- objUploadexcel.setCellProperty("body",i,"text","bind:"+ds_uploadexcel.getColID(i));
-
- index++;
- }
-
- ds_uploadexcel.deleteRow(0);
- return true;
- }
- // 업로드 된 엑셀 내용을 그리드에 셋팅한다.
- function misfReadExcel(tar_Grd, matCols, setCols) {
- var objUploadexcel = frmf_getComponents("grd_uploadexcel");
- var objExcelcol = frmf_getComponents("grd_excelcol");
- var ds_uploadexcel = this.objects[objUploadexcel.binddataset];
- var ds_excelcol = this.objects[objExcelcol.binddataset];
-
- var matColObj = misfSplitColSetting(matCols, false);
- var setColObj = misfSplitColSetting(setCols, true);
- if(matColObj == null) {
- alert("비교컬럼 설정에 오류가 있습니다.");
- return;
- }
-
- if(setColObj == null) {
- alert("셋팅컬럼 설정에 오류가 있습니다.");
- return;
- }
-
- var uploadNode = ds_uploadexcel;
- for (var rowIdx = 0; rowIdx < tar_Grd.rowcount; rowIdx++) {
- for(var nodIdx = 0; nodIdx < uploadNode.rowcount; nodIdx++){
- if(misfExcelCompare(tar_Grd, rowIdx, matColObj, uploadNode, nodIdx)) {
- var changeFlag = false;
- for(var k = 0; k < setColObj.length; k++) {
- var colIdx = tar_Grd.getBindCellIndex("body",setColObj[k].ref);
- if(tar_Grd.getCellProperty("body",colIdx,"edit") == "none") continue;
- var beforValue = tar_Grd.getCellValue(rowIdx, colIdx);
- var afterValue = uploadNode.getColumn(nodIdx, parseInt(setColObj[k].exRef));
- // trace(beforValue + ", " + afterValue);
- eval(tar_Grd.binddataset).setColumn(rowIdx, setColObj[k].ref, afterValue);
-
- if(beforValue != afterValue) {
- misfSetGridColor(tar_Grd, setColObj[k].ref, "#FF0000", "C" ,rowIdx);
- changeFlag = true;
- }
- }
- if(changeFlag) {
- fReadExcelCall_RowChange(tar_Grd, rowIdx);
- grdf_setStatus(tar_Grd, "U", [rowIdx]);
- }
- }
- }
- }
- }
- // 입력 된 컬럼 설정 파라메터를 객체로 변경
- function misfSplitColSetting(colString, skipNull) {
- var result = new Array();
- if(utlf_isNull(skipNull)) skipNull = false;
- var cols = colString.split("^");
- var objExcelcol = frmf_getComponents("grd_excelcol");
- var ds_excelcol = this.objects[objExcelcol.binddataset];
-
- for(var i = 0; i < cols.length; i++) {
- var splt = cols[i].split("=");
- if(utlf_isNull(splt) || splt.length != 2) return null;
- var colSet = new Object();
- colSet.ref = splt[0];
- colSet.colName = splt[1];
-
- var colNode = ds_excelcol.lookup("name", colSet.colName, "index");
- var colCount = ds_excelcol.getCaseCount("name=='"+colSet.colName+"'");
- if(utlf_isNull(colNode) || colCount != 1) {
- if(!skipNull) {
- alert("[" + colSet.colName + "]-[" + colSet.ref + "] 데이터를 찾을 수 없습니다.");
- return null;
- }
- } else {
- colSet.exRef = colNode;
- result.push(colSet);
- }
- }
- return result;
- }
- // 아이템 노드의 데이터와 그리드의 데이터 비교
- function misfExcelCompare(tar_Grd, rowIdx, matColObj, itemNode, nodIdx) {
- for(var k=0; k<matColObj.length; k++) {
- // trace("///" + itemNode.getColumn(nodIdx, parseInt(matColObj[k].exRef)));
- // trace("===" + tar_Grd.getCellText(rowIdx,tar_Grd.getBindCellIndex("body",matColObj[k].ref)));
- if(itemNode.getColumn(nodIdx, parseInt(matColObj[k].exRef)) != tar_Grd.getCellText(rowIdx,tar_Grd.getBindCellIndex("body",matColObj[k].ref)))
- return false;
- }
- return true;
- }
- // 엑셀데이터 적용 중 행 데이터가 변경되었을때 호출 되는 함수(오버라이딩 대상함수)
- function fReadExcelCall_RowChange(targetGrid, rowIndex) {
- // 오버라이딩
- }
- ]]></Script>
|