请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

chess3cake

注册会员

20

主题

56

帖子

156

积分

注册会员

积分
156
chess3cake
注册会员   /  发表于:2024-11-21 18:16  /   查看:165  /  回复:11
本帖最后由 JoeJin 于 2024-12-6 11:26 编辑



已加入需求:
  • DOCXLS-11680:希望 Filter 能支持正则表达式
  • DOCXLS-11619:希望能够自定义过滤逻辑(能满足对于多个过滤条件的抽象打包)



目前拥有的能力:

https://www.grapecity.com.cn/developer/grapecitydocuments/excel-java/docs/templates/template-configuration/template-properties/filter

希望提供的能力:
1. 自定义operator或者keyword, 比如我自定义“ilike”关键字,该关键字代表忽略大小写like。
2. 自定义function,比如我自定义 isBlank(something) 方法,该方法代表判断该值是否为空
3. 希望自定义operator/keyword/function可以通过json/sjs在模板中进行加载,该能力能够让自定义operator/keywor跟随模板保存。

4. 能否提供覆盖默认operator能力,比如我可以扩展like关键字来支持复杂类型的过滤

11 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-11-22 17:18:58
沙发
您好,Filter是GcExcel近期刚刚上线的新功能,目前各个功能还不完善,感谢您提出的宝贵意见。

关于您提出的四点能力,我想和您确认一下:

1、“自定义operator或者keyword”是为了解决什么场景下的问题?为什么需要使用ilike关键字?而不是直接使用like?

2、我注意到您提到的这些能力包含大量的自定义模块,目前GcExcel的Filter尚不具备自定义的能力,未来也不一定会支持如此复杂的自定义场景,对于绝大多数的GcExcel客户来说这种自定义能力的学习成本极为高昂。

因此,一个更好的实现方案是您根据您实际项目的情况,在引入数据源的时候自定设计相关的UI和逻辑先对数据源进行初步的筛选,这样一来您能够更加灵活的实现自定义功能,并且完全自主可控,也就无需局限在GcExcel这个组件上了。
回复 使用道具 举报
chess3cake
注册会员   /  发表于:2024-11-26 18:03:05
板凳
Joestar.Xu 发表于 2024-11-22 17:18
您好,Filter是GcExcel近期刚刚上线的新功能,目前各个功能还不完善,感谢您提出的宝贵意见。

关于您提 ...

1. 为了提供我们自定义的能力,比如模糊匹配,正则匹配,甚至更复杂的功能
2. 在我们的项目中有这样的设计,对于我们来说,如果GcExcel能够提供一部分开箱即用的自定义功能,那么我们的设计将会更简单
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-11-27 10:21:34
地板
了解了,我们这边调研评估一下,后续有进展我会在本帖中回复您。
回复 使用道具 举报
Lewis
初级会员   /  发表于:2024-11-28 10:11:39
5#
是不是类似SQL语法?
回复 使用道具 举报
JoeJin
超级版主   /  发表于:2024-11-29 08:50:45
6#
chess3cake 发表于 2024-11-26 18:03
1. 为了提供我们自定义的能力,比如模糊匹配,正则匹配,甚至更复杂的功能
2. 在我们的项目中有这样的设 ...

我们已经纳入 story 作为讨论。但现在对于需求本身还是有一些不够具体。

能否提供一两个具体的用例,比如数据源是什么样的,希望做什么样的过滤,但现在的过滤做不到,得需要自定义规则?
回复 使用道具 举报
chess3cake
注册会员   /  发表于:5 天前
7#
JoeJin 发表于 2024-11-29 08:50
我们已经纳入 story 作为讨论。但现在对于需求本身还是有一些不够具体。

能否提供一两个具体的用例, ...

1. 客户提供的数据中有有一些代表“空白”的特殊符号,在上数时我希望过滤带有这些符号的行,就会定义一个function 叫“isBlank(value)” 来进行上数的过滤。即F = isBlank(field)

2. 客户提供的数据里有一列序列号No,不同规则的No在GC模板上数时需要上数到不同的table/sheet。此时,我会定义一个keyword 叫“regex” 用来进行正则过滤,符合某种正则的会进入特定的某个table。即F = field1 regex 'some_regex'

3. 客户提供的数据里有一列关键词,这一列数据由于历史原因存在大小写混用的情况,在业务中a,A,a1,A1.。。。 这类数据被认定为是同一类型的数据,在最后的报表中会进入同一个table。此时,我会定义一个 keyword 叫 “ilikePrefix”,来进行忽略大小写前缀的过滤。即F = field1 ilikePrefix 'a'
回复 使用道具 举报
JoeJin
超级版主   /  发表于:5 天前
8#
chess3cake 发表于 2024-12-4 16:57
1. 客户提供的数据中有有一些代表“空白”的特殊符号,在上数时我希望过滤带有这些符号的行,就会定义一 ...

收到,对于提供的用例,可以抽象为以下三个需求:


1. 希望对特定的过滤条件进行组合。当前的过滤条件比较灵活,对于特定的“空白”字符,可能是可以做出过滤的。但目前没法将多个条件组合并封装到一起。

2. 希望能支持正则过滤。目前过滤的设计理念偏向 SQL,当前是支持通配符的。请评估,通配符结合多个过滤条件,能否满足需求?


3. 希望能够忽略大小写进行过滤。可能的方案是,我们会考虑提供 toUpper 或者 toLower 的方法,来解决问题。


请考虑以上需求理解是否正确?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
chess3cake
注册会员   /  发表于:5 天前
9#
JoeJin 发表于 2024-12-4 17:40
收到,对于提供的用例,可以抽象为以下三个需求:

1. 第一个需求的抽象是符合预期的,将N个小条件封装成一个预知条件是我们希望得到的能力。
2. 我理解通配符是无法替代正则的。比如这样一个正则[a-z][C-E],通配符模式可以进行替代处理,但这种替代需要完全枚举其正则对应的结果的。再比如像嵌套类型的正则([a-z][C-E])|([0-2][a-b]),通配符应该是无法替代。
3.toUpper/toLower能够替代目前的用例。但如果情况更复杂一点,用户提供的是一组分类词库的话就无法处理了。
回复 使用道具 举报
JoeJin
超级版主   /  发表于:4 天前
10#
chess3cake 发表于 2024-12-4 18:03
1. 第一个需求的抽象是符合预期的,将N个小条件封装成一个预知条件是我们希望得到的能力。
2. 我理解通 ...

OK,封装和正则的需求理解,我们会采纳作为需求考虑。

第三个,可能还是需要具体的来一个复杂的分类词库的例子。
目前的 filter,因为支持了通配符,自持多条件组合,如果加上忽略大小写,应该是可以满足 prefix 的判断。如果未来也支持了正则,似乎多复杂的过滤,应该也可以支持。所以我们得判断一下是什么样的用例,目前的设计无法 cover。


另外,还有一个疑问,我们提出了不少自定义过滤的需求,这些需求,是否应该直接放在数据源准备的环节?
按我理解,自定义也是需要通过代码做,那如果直接做到数据源上,是否会更简单,效果也更好?
同时,模板的过滤会经过引擎处理,相比之下直接对数据源做用 java 代码过滤,性能也会更好一些。

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部