爱迪生 发表于 2022-6-9 09:11:11

【SpreadJS V15.1 新特性介绍】 公式函数中使用”.“操作符引用对象中的属性

本帖最后由 爱迪生 于 2022-6-16 11:36 编辑

SpreadJS V15.1添加“.”运算符从左值获取属性,它可以是PROPERTY函数的简化,关于PROPERTY函数参考:https://demo.grapecity.com.cn/sp ... perty-function.html
一.详细信息:
1."." 运算符左值是一个对象。
例如:
用法
例子

常规=A1.name
范围(溢出)=A1:A10.name
=E1#.name
间接引用=INDIRECT("A1").aaa
自定义名称=abcd.name
在格式化字符串中使用=@.name
对象中的对象=A1.address.city
在 LET 和 LAMBDA=LAMBDA(temp,temp.city)
2."."运算符右值是对象的字段。
如果包含空白,可以在字段名称周围用"括起。

用法
例子

使用"和Esc键=A1."""abc"""(equals =PROPERTY(A1, """abc"""))
使用 "=A1."first name"
常规=A1.name
二.策略:
1.优先级:如果spread中包含自定义名称“A1.name”,则“=A1.name”将被识别为自定义名称,而不是"." 运算符(但是"!"运算符优先级高于"." )
2."." 运算符区分大小写,与属性函数相同。
3.ExcelIO:在xml中,存储为"."(Excel 2019/GoogleSheets将显示公式的语法错误,如: =A1:A10.name    =INDIRECT("A1").aaa    =A1.)(由于Excel不支持对象类型,对象值无法正常导出。)
三.与Excel不同点:
SpreadJS"."运算符适用于左边的值是JSON对象。与Excel引用数据类型完全不同

SpreadJS "." 运算符
Excel引用数据类型


从JSON对象获取字段值
(可以在没有allowDynamicArray的情况下工作)仅适用于链接数据类型(SJS不支持此链接数据类型)
(仅在 Office 365 中)
不显示字段列表



(原因是SpreadJS CE不传输引用单元格格式化程序)
输入“=A2”时显示字段列表下拉列表。
https://support.content.office.net/en-us/media/7b20e3e8-b5b7-4734-9745-588fa174d38f.png


支持=A1.address.city不支持对象中的对象。
四.参考代码与示例:

1.参考代码:
spread = new spreadNS.Workbook(document.getElementById("ss"), { sheetCount: 2, tabStripRatio: 0.88 });
            spread.options.allowDynamicArray = true;

            var sheet = spread.getActiveSheet();
            sheet.setValue(0, 0, {name:"john", age:20});
            sheet.setValue(0, 1, {name:"kevin", age:30});
            sheet.setValue(1, 0, {name:"mary", age:28});
            sheet.setValue(1, 1, {name:"tom", age:25});


            sheet.setValue(2, 0, 'A1.name');
            sheet.setFormula(3, 0, '=A1.name');

            sheet.setValue(2, 2, 'A1.age');
            sheet.setFormula(3, 2, '=A1.age');

            sheet.setValue(6, 0, 'TEXTJOIN("-",FALSE,A1.name,A1.age)');
            sheet.setFormula(7, 0, '=TEXTJOIN("-",FALSE,A1.name,A1.age)');

            sheet.setFormula(0, 4, '=A1:B2');

            sheet.setValue(11, 0, 'A1:B2.name');
            sheet.setValue(11, 4, 'E1#.name');
            sheet.setFormula(12, 0, '=A1:B2.name');
            sheet.setFormula(12, 4, '=E1#.name');
2.SpreadJS页面显示:














页: [1]
查看完整版本: 【SpreadJS V15.1 新特性介绍】 公式函数中使用”.“操作符引用对象中的属性