diff --git a/src/global/formula.js b/src/global/formula.js index 0ffcf3078..61f0929f2 100644 --- a/src/global/formula.js +++ b/src/global/formula.js @@ -334,7 +334,7 @@ const luckysheetformula = { let value = ""; // && d[r][c].v != null if (d[r] != null && d[r][c] != null) { - let cell = d[r][c]; + let cell = $.extend(true, {}, d[r][c]); if(isInlineStringCell(cell)){ value = getInlineStringNoStyle(r, c); @@ -1339,7 +1339,7 @@ const luckysheetformula = { if(getObjType(value) == "string" && value.slice(0, 1) == "=" && value.length > 1){ let v = _this.execfunction(value, r, c, undefined, true); isRunExecFunction = false; - curv = d[r][c]; + curv = $.extend(true, {}, d[r][c]); curv.v = v[1]; curv.f = v[2]; @@ -1370,7 +1370,7 @@ const luckysheetformula = { isRunExecFunction = false; // get v/m/ct - curv = d[r][c]; + curv = $.extend(true, {}, d[r][c]); curv.v = v[1]; curv.f = v[2]; @@ -1438,7 +1438,7 @@ const luckysheetformula = { _this.execFunctionGroup(r, c, value); isRunExecFunction = false; - curv = d[r][c]; + curv = $.extend(true, {}, d[r][c]); // let gd = _this.execFunctionGlobalData[r+"_"+c+"_"+Store.currentSheetIndex]; // if(gd!=null){ // curv.v = gd.v; diff --git a/src/global/func_methods.js b/src/global/func_methods.js index beebf77fd..bc77d14f4 100644 --- a/src/global/func_methods.js +++ b/src/global/func_methods.js @@ -22,37 +22,40 @@ const func_methods = { if(rangeObj.data == null){ if(!isNeglectNullCell){ - if(nullCellType == "number"){ + if(nullCellType === "number"){ dataArr.push(0); } - else if(nullCellType == "text"){ + else if(nullCellType === "text"){ dataArr.push(""); } } } else{ - if(getObjType(rangeObj.data) == "array"){ + if(getObjType(rangeObj.data) === "array"){ for(let i = 0; i < rangeObj.data.length; i++){ for(let j = 0; j < rangeObj.data[i].length; j++){ - if(rangeObj.data[i][j] != null){ - let datav = rangeObj.data[i][j]; - if(datav instanceof Object){ - dataArr.push(datav.v); - } - else{ - dataArr.push(datav); - } + let cell = rangeObj.data[i][j]; + let value = cell + + if(getObjType(cell) === 'object'){ + value = cell.v } - else{ + + if(value == null ){ if(!isNeglectNullCell){ - if(nullCellType == "number"){ - dataArr.push(0); + if(nullCellType === "number"){ + value = 0; } - else if(nullCellType == "text"){ - dataArr.push(""); + else if(nullCellType === "text"){ + value = ''; } + + dataArr.push(value); } } + else{ + dataArr.push(value); + } } } } @@ -97,23 +100,19 @@ const func_methods = { let rowArr = []; for(let j = 0; j < rangeObj.data[i].length; j++){ - let value; + let cell = rangeObj.data[i][j]; + let value = cell; - if(rangeObj.data[i][j] != null){ - let datav = rangeObj.data[i][j]; - if(datav instanceof Object){ - value = datav.v; - } - else{ - value = datav; - } + if(getObjType(cell) === 'object'){ + value = cell.v } - else{ - if(nullCellType == "number"){ + + if(value == null){ + if(nullCellType === "number"){ value = 0; } - else if(nullCellType == "text"){ - value = ""; + else if(nullCellType === "text"){ + value = ''; } } diff --git a/src/global/setdata.js b/src/global/setdata.js index 2f968a15e..13f38135e 100644 --- a/src/global/setdata.js +++ b/src/global/setdata.js @@ -10,7 +10,7 @@ function setcellvalue(r, c, d, v) { if(d == null){ d = Store.flowdata; } - let cell = d[r][c]; + let cell = $.extend(true, {}, d[r][c]); let vupdate;