formulaCondition用法(二)
本帖最后由 Ellia.Duan 于 2024-9-2 13:52 编辑在上一篇文章中,我们介绍了使用formulaCondition实现了类似Excel中高级筛选的功能,
在SpreadJS中封装了筛选器中“本年度截至到现在”的功能,如下图所示:
所以今天我们介绍下,如何使用formulaCondition实现筛选器中“本年度截至到现在”的功能。
首先,我们创建一点数据
1、创建数据
sheet.setValue(0, 0, '日期', GC.Spread.Sheets.SheetArea.colHeader);
sheet.setValue(0, 0, new Date('2023-1-1'));
sheet.setValue(1, 0, new Date('2025-1-1'));
sheet.setValue(2, 0, new Date('2024-1-1'));
sheet.setValue(3, 0, new Date('2024-8-1'));
sheet.setValue(4, 0, new Date('2024-12-1'));
sheet.setColumnWidth(0, 200)
sheet.getCell(-1, 0).formatter('yyyy-mm-dd')通过上述代码创建了五个日期,并定义formatter为'yyyy-mm-dd'。
2、创建filter
接下来,创建filter
var filter = sheet.rowFilter();
if (filter) {
filter.removeFilterItems(0);
}
filter.addFilterItem(0, nCondition);
filter.filter(0);3、定义Condition
接下来,实现上述代码中的nCondition。
我们再看一下要做的功能:“本年度截至到现在” 意思是要筛选出今年的日期,以及在当天之前的日期。
在excel中,可以用Year()来获取日期的年数据。
所以,我们用YEAR(A1)=YEAR(TODAY())来判断是否是今年,然后用A1<=TODAY()来判断是当天之前的日期。
将这两个条件组合一下,就是我们需要的公式了。
=AND(YEAR(A1)=YEAR(TODAY()), A1<=TODAY())接下来定义nCondition
var nCondition = new GC.Spread.Sheets.ConditionalFormatting.Condition(
GC.Spread.Sheets.ConditionalFormatting.ConditionType.formulaCondition,
{
formula: "=AND(YEAR(A1)=YEAR(TODAY()), A1<=TODAY())",
customValueType: GC.Spread.Sheets.ConditionalFormatting.CustomValueType.formula
}
);至此,代码部分就完成了。我们来测试下。
原始数据:
筛选后:
发现筛选后的数据,符合预期。
附件:
页:
[1]