Spread.Sheets 支持在表格中使用结构化引用。
结构化引用使用关键字和列名来引用表格中的单元格区域。
结构化引用可以分为以下几个部分,如图所示。图中的公式表示了将税和销售额相加的结果。
你可以使用一些特殊说明符以简化公式的编写。
你可以用这些特殊的说明符来方便地引用表格中的任意部分。
下表说明了你可以使用的特殊说明符:
特殊项目 | 例子 | 引用 | 单元格区域 |
#All | =DeptSales[#All] | 整个表格,包括标题,数据和总计。 | A1:E8 |
#Data | =DeptSales[#Data] | 数据 | A2:E7 |
#Headers | =DeptSales[#Headers] | 标题行 | A1:E1 |
#Totals | =DeptSales[#Totals] | 总计行 | A8:E8 |
#This Row | =DeptSales[#This Row] | 当前行的一部分 | A5:E5 (current row is 5) |
"#This Row" 项目可以被缩写为 "@". 比如: =DeptSales[#This Row] 和 =DeptSales[@] 是一样的。 "#Data" 项目可以和 "#Headers" 或者 "#Totals"一起用。下表给出了一些例子:
特殊项目 | 例子 | 引用 | 单元格区域 |
#Headers and #Data | =DeptSales[[#Headers], [#Data]] | 列标题和数据 | A1:E7 |
#Data and #Totals | =DeptSales[[#Data], [#Totals]] | 数据和合计行 | A2:E8 |
如果未指定特殊项目, 输入的公式将会被认为是数据显示在表格中。
特殊项目 | 例子 | 引用 | 单元格区域 |
None | =DeptSales[] or =DeptSales | 数据区域 | A2:E7 |
列说明符表示一列数据,不包括标题行和合计行。
下表例举了列说明符的用法:
列说明符 | 例子 | 引用 | 单元格区域 |
单列 | =DeptSales[SaleAmt] | 指代 "SaleAmt" 列的所有数据 | C2:C7 |
多列 | =DeptSales[[SaleAmt]:[TaxAmt]] | 从 "SaleAmt" 列到"TaxAmt" 列的数据 | C2:E7 |
无 | =DeptSales[[#Data]] | 所有列的数据 | A2:E8 |
所有表, 列, 和特殊项目说明符需要使用方括号[]括起来。使用嵌套说明符时,需要使用方括号([])括起来。包含其他说明符说明符需要外部匹配方括号内的其他说明符方括号括起。 如果策略有冲突的话,优先级是从高到低的。
方括号遵循以下规则:
以下通用规则同样适用:
你可以使用 setColumnDataFormula 和 setColumnFormula 方法来为公式添加结构化引用。你也可以在表格区域以外引用表中的数据,比如:
activeSheet.getCell(7,1).formula("SUM(Table1[SubTotal])");。注意,当设置了多个公式时,最后一个设置的公式优先生效。
列说明符在表头和表页脚中不会生效。 |
以下代码创建了一个表,并在公式中使用了结构化引用来创建总计栏。
activeSheet.tables.add("Table1", 0, 0, 4, 3, GC.Spread.Sheets.Tables.TableThemes.dark1); activeSheet.getCell(0,0).text("Value1"); activeSheet.getCell(0,1).text("Value2"); activeSheet.getCell(0,2).text("SubTotal"); activeSheet.getCell(1,0).text("1"); activeSheet.getCell(2,0).text("2"); activeSheet.getCell(3,0).text("3"); activeSheet.getCell(1,1).text("5"); activeSheet.getCell(2,1).text("5"); activeSheet.getCell(3,1).text("5"); var sTable = activeSheet.tables.findByName("Table1").setColumnDataFormula(2, "=[Value1]*[Value2]"); sTable.showFooter(true); //set footer value sTable.setColumnValue(0, "Total"); sTable.setColumnFormula(2, "SUM(Table1[SubTotal])"); activeSheet.getColumn(0).width(80); activeSheet.getColumn(1).width(80); activeSheet.getColumn(2).width(80); //activeSheet.getCell(7,1).formula("SUM(Table1[SubTotal])"); |
更多信息
如何创建表格
使用公式