[]
过滤属性('F')允许你设置模板内数据过滤的类型。此属性提供了两种过滤选项:条件过滤(Conditional)和切片过滤(Slice filters)。你可以单独使用这些过滤选项,或结合使用来从表格中过滤数据。此属性可以从单个或多个表格中过滤数据,以生成报告。
GcExcel 仅支持在常规数据源上使用过滤属性,如 java.sql.ResultSet 或 ITableDataSource。
type=warning
注意:你可以通过创建自定义数据表来对 JSON 数据源应用过滤。更多信息,请参考数据源中的自定义数据表。
条件过滤器使用运算符和 AND、OR、NOT 以及 LIKE 等的关键字来过滤数据。LIKE 关键字和比较运算符具有最高优先级,将首先被评估。对于其余的关键字,其优先级顺序为:NOT > AND > OR。此外,使用成对的括号可以自定义这些运算符和关键字评估的操作顺序。
值类型: 表达式
F/Filter = (field1 > 1 AND field2 = 2 OR field3 <> 3)
下表列出了条件过滤器(Conditional Filter)所支持的运算符和关键字:
操作符/关键字 | 支持的操作符/关键字 | 符号 | 描述 |
---|---|---|---|
操作符 | 小于 | < | 过滤出小于给定值的数据。 |
小于等于 | <= | 过滤出小于等于给定值的值。 | |
大于 | > | 过滤出大于给定值的值。 | |
大于等于 | >= | 过滤出大于等于给定值的值。 | |
等于 | = | 过滤出等于给定值的值。 | |
不等于 | <> | 过滤出不等于给定值的值。 | |
关键字 | 与 | AND | 逻辑运算符,用于在查询中组合多个条件。当两个条件都为真时,它返回真。 例如: |
或 | OR | 逻辑运算符,用于在查询中组合多个条件。如果至少有一个条件为真,则返回真。 例如: | |
非 | NOT | 逻辑运算符,用于在查询中否定一个条件。如果条件为假,则返回真;如果条件为真,则返回假。 例如: | |
包含 | LIKE | 一个用于模式匹配操作的关键字。以下有两种通配符可与
例如: 分别使用 |
type=warning
注意:在过滤条件中,左操作数必须是当前表中的字段,而右操作数可以是任何常量、当前表中的字段,或是另一个表中的引用字段。
示例 1:使用运算符进行过滤
{{order.oid(F = (order.count > 10))}}
下图展示了模板如何通过过滤出销售数量大于10的订单来生成报告。您还可以下载下面示例中使用的 Excel 模板布局。
示例 2:使用关键词进行过滤
{{order.oid(F = (order.cid ="C002" and order.pid = "W003"))}}
下面的图示展示了如何通过模板生成一份报告,该报告通过过滤筛选出客户ID为"C002"且产品ID为"W003"的所有订单。你也可以下载在下面示例中所使用的Excel模板布局。
示例3:多源报表
{{product.name(F=(product.pid = order.pid))}}
下面的图像展示了模板如何通过从不同的数据表中使用产品ID来筛选产品名称,从而生成一份报告。你也可以下载在下面示例中使用的Excel模板布局。
示例4:复杂多源报表
Customer Name | Product Name |
---|---|
{{customer.name(F=(customer.cid = order.cid))}} | {{product.name(F=(product.pid = order.pid))}} |
下面的图像展示了模板如何通过从不同的数据表中使用客户ID和产品ID来筛选客户和产品名称,从而生成一份报告。你也可以下载在下面示例中使用的Excel模板布局。
切片过滤器(Slice Filter)通过选取数组中从给定起始索引到给定终止索引的数据来过滤数据,同时还可以定义一个步长,用来确定索引之间的间隔。
值类型:数组
F/Filter = [start:stop:step]
start
指的是过滤开始的索引位置;
stop
指的是过滤结束前的索引位置,不包括这个位置本身;
step
定义了索引间的间隔,即每几个元素选择一个。
例如:使用切片过滤器
{{order.oid(F = [0:20:2])}}
下面的图像是关于模板如何生成报告的示例,该报告通过上述过滤规则筛选出前20个奇数位置的订单。你也可以下载在这个示例中使用的Excel模板布局。
示例:切片过滤反向操作
{{order.oid(F = [20:0:-2])}}
下面的图像展示了模板如何通过从索引20开始反向筛选最后二十个订单来生成报告。你也可以下载在下面示例中所使用的Excel模板布局。
SliceFilterReverseOperation.xlsx
type=warning
注意:当从记录的末尾开始迭代(反向操作)时,结果将会保持原来的顺序。这是GcExcel的一个限制。
你可以结合使用条件过滤器和切片过滤器来生成报告。
示例:组合过滤器
{{order.oid(F = (order.oid like "*1?")[0:5])}}
下面的图像展示了模板如何首先通过匹配表达式 "*1?" 来过滤订单ID,然后从过滤后的结果中选取前五条记录来生成报告。你也可以下载在下面示例中所使用的Excel模板布局。
type=warning
注意:在过滤语句中,切片过滤器和条件过滤器只能出现零次或一次。