本帖最后由 爱迪生 于 2022-6-16 11:36 编辑
SpreadJS V15.1添加“.”运算符从左值获取属性,它可以是PROPERTY函数的简化,关于PROPERTY函数参考:https://demo.grapecity.com.cn/sp ... perty-function.html
一.详细信息:
1."." 运算符左值是一个对象。
例如: | | 常规 | | 范围(溢出) | | 间接引用 | | 自定义名称 | | 在格式化字符串中使用 | | 对象中的对象 | | 在 LET 和 LAMBDA | | 2."."运算符右值是对象的字段。
如果包含空白,可以在字段名称周围用"括起。
| | 使用"和Esc键 | =A1."""abc""" (equals =PROPERTY(A1, """abc""")) | 使用 " | | 常规 | | 二.策略:
1.优先级:如果spread中包含自定义名称“A1.name”,则“=A1.name”将被识别为自定义名称,而不是"." 运算符(但是"!"运算符优先级高于"." )
2."." 运算符区分大小写,与属性函数相同。
3.ExcelIO:在xml中,存储为"."(Excel 2019/GoogleSheets将显示公式的语法错误,如: =A1:A10.name =INDIRECT("A1").aaa =A1.[first name])(由于Excel不支持对象类型,对象值无法正常导出。)
三.与Excel不同点:
SpreadJS"."运算符适用于左边的值是JSON对象。与Excel引用数据类型完全不同
| | 从JSON对象获取字段值
(可以在没有allowDynamicArray的情况下工作) | | 不显示字段列表
(原因是SpreadJS CE不传输引用单元格格式化程序)
| | 支持=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页面显示:
|