rays
rays
> 你建议用这个版本 https://github.com/myliang/x-spreadsheet 该问题依旧存在,在项目Demo里面试了一下,还是卡死 
> 不支持IF函数, 你可以formula.js中添加 我已经成功的扩展了几个函数,但是现在遇到一些问题,请问有没有交流群,或者可否加个好友交流一下
if表达式里面的值传递问题,这种的值该怎么传?传到后台的应该是一个字符串 “1=1”,或者是一个布尔类型的值 
> 可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧 这是在模拟Excel的if函数,如果改动太大,客户不愿意学习新的语法,我在想怎么判断+-*/=这些运算符,从而将运算符两边的值拿到(如将A5的值1拿到,A6的值1拿到),然后拼接成一个新的字符串(如“1=1”)发送给逻辑运算函数。如果需要这么做,我该到源码的哪儿去修改?
> 可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧 我是这样想的,拿到参数列表(所有参数),然后用,分割成数组,然后对每个参数进行判断,如果出现运算法,就触发值解析,但是不知道在哪儿去实现,这边的项目比较着急,可能没时间慢慢去看源码
> > > 可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧 > > > > > > 我是这样想的,拿到参数列表(所有参数),然后用,分割成数组,然后对每个参数进行判断,如果出现运算法,就触发值解析,但是不知道在哪儿去实现,这边的项目比较着急,可能没时间慢慢去看源码 > > 如果是生产环境,我其实不建议你使用,我这个项目的目的更多供大家学习,二次开发 > 暂时表达式计算不支持判断条件,要支持修改起来应该不难,我今天晚上可以看看 目前知道的所有web在线编辑excel的都是收费的,你这个已经做了很多东西,我们后期可以一起继续完善,如果要自己实现,会更浪费很多的时间。我提供的那个思路是完全可以的,函数实现不用自己造轮子,已经有开源的项目可以使用,我就使用的formula.js。能告诉我一下你的赋值事件在哪儿触发的吗,我是java后端,对前端不是很了解,找起来有点浪费时间
> @wuganzhi我修改一下,最新版本可以支持IF函数 我在尝试写一个解释器,把类似A1=Z1这样的表达式替换成真正的值,从而拼接成一个完整的表达式。如A1=B2,解释完之后应该为2=4这样的式子,然后将他完整的传给formula.js,formula.js有高达300多个函数库,这样也不用每次扩展函数都需要修改源代码了,直接将表达式传给formula.js,他会帮我做好运算,然后返回给我一个值,传给formula.js可以直接是=号后面的所有东西(解释完之后的)
> @wuganzhi我修改一下,最新版本可以支持IF函数 我刚刚看了一下,对if的支持并不行,会报以下错误(IF函数还可以写AND和OR如:IF(AND(A1=A2,A3>A5,A1
> 当然你可以二次开发,完全替换成formulajs 是的,我在尝试进行二次开发,但是我觉得xspreadsheet有必要留一个接口用来扩展第三方库,这样扩展性会好一些
if函数 @myliang 报错地点是top没有拿到栈中的数据,不知道你传到foemula里面的表达式是不是解析过的 