SpreadJS相对引用和绝对引用的相互转换
本帖最后由 Ellia.Duan 于 2022-9-7 11:15 编辑我们首先给单元格设置引用其他单元格的公式,代码如下:sheet = spread.getSheet(0);
// 设值
sheet.setValue(0, 0, 1, 3);
sheet.setValue(1, 0, 50, 3);
sheet.setValue(2, 0, 100, 3);
sheet.setValue(3, 0, 2, 3);
sheet.setValue(4, 0, 60, 3);
sheet.setValue(5, 0, 90, 3);
sheet.clearSelection();
// 添加selection
sheet.addSelection(2, 0, 3, 1);
var range = sheet.getSelections();
// 获取range字符串
var rangeStr = GC.Spread.Sheets.CalcEngine.rangeToFormula(range,0,0,GC.Spread.Sheets.CalcEngine.RangeReferenceRelative.allRelative);
// 使用选定区域创建公式
var formula = "Sum(" + rangeStr + ")";
// 在表单的单元格中设置公式
sheet.setFormula(5, 5, formula, GC.Spread.Sheets.SheetArea.viewport);
在界面中查看效果:
接下来我们用rangesToFormula()将相对引用区域转换为绝对引用区//获取原公式
let formula2 = sheet.getFormula(5,5)
//获取原表达式
let expression1 = GC.Spread.Sheets.CalcEngine.formulaToExpression(sheet, formula2, 0, 0);
//将原区域相对引用转换为绝对引用
let rangesStr = GC.Spread.Sheets.CalcEngine.rangesToFormula(range,0,0,GC.Spread.Sheets.CalcEngine.RangeReferenceRelative.allAbsolute);
console.log(rangesStr)
// 将原表达式函数和转换后的区域拼接为新的公式
let formula = expression1.functionName+"(" + rangesStr + ")";
// 在表单的单元格中设置公式
sheet.setFormula(5, 5, formula, GC.Spread.Sheets.SheetArea.viewport);
我们看一下页面
Prefect!!!
怎么知道当前用户是否在编辑公式
比如上图用户的鼠标聚焦在D6这个公式中我怎么知道当前选的是B列10行这个单元格SUM公式的D6 而不是D10
bigsun008 发表于 2024-8-21 18:12
怎么知道当前用户是否在编辑公式
比如上图用户的鼠标聚焦在D6这个公式中我怎么知道当前选的是B列1 ...
您好,SpreadJS原生上没有相关的接口和事件可以或您目前正在编辑的公式的区域。
页:
[1]