123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- // 엑셀파일 업로드
- function misfUploadExcel() {
- model.removeNodeset(grd_uploadexcel.nodeset);
- model.makeNode(grd_uploadexcel.nodeset);
- model.removeNodeset(grd_excelcol.nodeset);
- model.makeNode(grd_excelcol.nodeset);
-
- var fileName = window.fileDialog("open", "", false);
-
- if(fileName == null || fileName == "") return false;
-
- grd_uploadexcel.loadExcel(fileName);
-
- var uploadNode = instance1.selectNodes(grd_uploadexcel.nodeset);
-
- if(uploadNode == null || uploadNode.length < 1) return false;
-
- var headNode = uploadNode.item(0);
- var caption = "";
- var selNode = headNode.firstChild;
-
- for(var i=0; i<99; i++){
- if(i != 0)caption += "^";
- var index = "idx" + (i<9?"0":"") + (i+1);
- var colName = selNode==null?index:selNode.value;
- caption += colName;
-
- model.makeValue("/root/temp/uploadexcel/colnamelist[" + (i+1) + "]/index", index);
- model.makeValue("/root/temp/uploadexcel/colnamelist[" + (i+1) + "]/name", colName);
-
- if(selNode != null) selNode = selNode.nextSibling;
- }
- grd_uploadexcel.caption = caption;
- grd_uploadexcel.deleteRow(1);
- grd_uploadexcel.refresh();
- return true;
- }
- // 업로드 된 엑셀 내용을 그리드에 셋팅한다.
- function misfReadExcel(tar_Grd, matCols, setCols) {
-
- var matColObj = misfSplitColSetting(matCols, false);
- var setColObj = misfSplitColSetting(setCols, true);
-
- if(matColObj == null) {
- alert("비교컬럼 설정에 오류가 있습니다.");
- return;
- }
- if(setColObj == null) {
- alert("셋팅컬럼 설정에 오류가 있습니다.");
- return;
- }
-
- var uploadNode = instance1.selectNodes(grd_uploadexcel.nodeset);
- for (var rowIdx=tar_Grd.fixedRows; rowIdx < tar_Grd.rows; rowIdx++) {
- for(var nodIdx=0; nodIdx < uploadNode.length; nodIdx++){
- if(misfExcelCompare(tar_Grd, rowIdx, matColObj, uploadNode.item(nodIdx))) {
- var changeFlag = false;
- for(var k=0; k<setColObj.length; k++) {
- if(tar_Grd.isReadOnly(rowIdx,tar_Grd.colRef(setColObj[k].ref))) continue;
- var beforValue = tar_Grd.valueMatrix(rowIdx,tar_Grd.colRef(setColObj[k].ref));
- var afterValue = uploadNode.item(nodIdx).selectSingleNode(setColObj[k].exRef).text.split(',').join("");
- tar_Grd.valueMatrix(rowIdx,tar_Grd.colRef(setColObj[k].ref)) = afterValue;
- if(beforValue != afterValue) {
- tar_Grd.cellStyle("color",rowIdx,tar_Grd.colRef(setColObj[k].ref)) = "#FF0000";
- changeFlag = true;
- }
- }
- if(changeFlag) {
- fReadExcelCall_RowChange(tar_Grd, rowIdx);
- tar_Grd.addStatus(rowIdx,"update");
- }
- }
- }
- }
- tar_Grd.refresh();
- }
- // 입력 된 컬럼 설정 파라메터를 객체로 변경
- function misfSplitColSetting(colString, skipNull) {
- var result = new Array();
- if(skipNull == null || skipNull == "") skipNull = false;
- var cols = colString.split("^");
- for(var i=0; i<cols.length; i++) {
- var splt = cols[i].split("=");
- if(splt == null || splt.length != 2) return null;
- var colSet = new Object();
- colSet.ref = splt[0];
- colSet.colName = splt[1];
-
- var colNode = instance1.selectNodes(grd_excelcol.nodeset + "[name='" + colSet.colName + "']");
- if(colNode == null || colNode.length != 1) {
- if(!skipNull) {
- alert("[" + colSet.colName + "]-[" + colSet.ref + "] 데이터를 찾을 수 없습니다.");
- return null;
- }
- } else {
- colSet.exRef = colNode.item(0).selectSingleNode("index").text;
- result.push(colSet);
- }
- }
- return result;
- }
- // 아이템 노드의 데이터와 그리드의 데이터 비교
- function misfExcelCompare(tar_Grd, rowIdx, matColObj, itemNode) {
- for(var k=0; k<matColObj.length; k++) {
- if(itemNode.selectSingleNode(matColObj[k].exRef).text
- != tar_Grd.valueMatrix(rowIdx,tar_Grd.colRef(matColObj[k].ref)))
- return false;
- }
- return true;
- }
- // 엑셀데이터 적용 중 행 데이터가 변경되었을때 호출 되는 함수(오버라이딩 대상함수)
- function fReadExcelCall_RowChange(targetGrid, rowIndex) {
- // 오버라이딩
- }
|