Git Product home page Git Product logo

Comments (31)

myliang avatar myliang commented on August 16, 2024

不做集成,不做依赖
但是你可以二次开发自己集成

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

建议你用这个版本 https://github.com/myliang/x-spreadsheet

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

你建议用这个版本 https://github.com/myliang/x-spreadsheet

该问题依旧存在,在项目Demo里面试了一下,还是卡死
image

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

不支持IF函数, 你可以formula.js中添加

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

不支持IF函数, 你可以formula.js中添加

我已经成功的扩展了几个函数,但是现在遇到一些问题,请问有没有交流群,或者可否加个好友交流一下

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

没有交流群,有问题直接这里反馈就行

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

if表达式里面的值传递问题,这种的值该怎么传?传到后台的应该是一个字符串 “1=1”,或者是一个布尔类型的值
image

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧

这是在模拟Excel的if函数,如果改动太大,客户不愿意学习新的语法,我在想怎么判断+-*/<>=这些运算符,从而将运算符两边的值拿到(如将A5的值1拿到,A6的值1拿到),然后拼接成一个新的字符串(如“1=1”)发送给逻辑运算函数。如果需要这么做,我该到源码的哪儿去修改?

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧

我是这样想的,拿到参数列表(所有参数),然后用,分割成数组,然后对每个参数进行判断,如果出现运算法,就触发值解析,但是不知道在哪儿去实现,这边的项目比较着急,可能没时间慢慢去看源码

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧

我是这样想的,拿到参数列表(所有参数),然后用,分割成数组,然后对每个参数进行判断,如果出现运算法,就触发值解析,但是不知道在哪儿去实现,这边的项目比较着急,可能没时间慢慢去看源码

如果是生产环境,我其实不建议你使用,我这个项目的目的更多供大家学习,二次开发
暂时表达式计算不支持判断条件,要支持修改起来应该不难,我今天晚上可以看看

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧

我是这样想的,拿到参数列表(所有参数),然后用,分割成数组,然后对每个参数进行判断,如果出现运算法,就触发值解析,但是不知道在哪儿去实现,这边的项目比较着急,可能没时间慢慢去看源码

如果是生产环境,我其实不建议你使用,我这个项目的目的更多供大家学习,二次开发
暂时表达式计算不支持判断条件,要支持修改起来应该不难,我今天晚上可以看看

目前知道的所有web在线编辑excel的都是收费的,你这个已经做了很多东西,我们后期可以一起继续完善,如果要自己实现,会更浪费很多的时间。我提供的那个思路是完全可以的,函数实现不用自己造轮子,已经有开源的项目可以使用,我就使用的formula.js。能告诉我一下你的赋值事件在哪儿触发的吗,我是java后端,对前端不是很了解,找起来有点浪费时间

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

https://github.com/myliang/x-spreadsheet/blob/master/src/core/cell.js

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

@wuganzhi 我修改一下,最新版本可以支持IF函数

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

@wuganzhi我修改一下,最新版本可以支持IF函数

我在尝试写一个解释器,把类似A1=Z1这样的表达式替换成真正的值,从而拼接成一个完整的表达式。如A1=B2,解释完之后应该为2=4这样的式子,然后将他完整的传给formula.js,formula.js有高达300多个函数库,这样也不用每次扩展函数都需要修改源代码了,直接将表达式传给formula.js,他会帮我做好运算,然后返回给我一个值,传给formula.js可以直接是=号后面的所有东西(解释完之后的)

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

@wuganzhi我修改一下,最新版本可以支持IF函数
我刚刚看了一下,对if的支持并不行,会报以下错误(IF函数还可以写AND和OR如:IF(AND(A1=A2,A3>A5,A1<A5),"true","false")这样的表达式)
image

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

其实再加个and函数就OK,我不喜欢依赖第三方,确实用不到那么多函数

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

当然你可以二次开发,完全替换成formulajs

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

当然你可以二次开发,完全替换成formulajs
是的,我在尝试进行二次开发,但是我觉得xspreadsheet有必要留一个接口用来扩展第三方库,这样扩展性会好一些

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

其实内部的foemula就是,只是接口没有暴露出来

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

if函数 @myliang 报错地点是top没有拿到栈中的数据,不知道你传到foemula里面的表达式是不是解析过的
image

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

是解析过的,

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

是解析过的,

如果各种复杂的表达式都能解析,那扩展起来确实就很方便了

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

加减乘除,函数扩展就行了

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

加减乘除,函数扩展就行了

我已经将IF等函数完美的运行起来,现在遇到的一个新问题就是:号选择的问题,目前正在解决。我想问的是excel其他的所有函数:号选择多个值之后,得到的是一个数组吗?图片是已经处理过的表达式
image
image

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

参数都是一个数组

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

参数都是一个数组

我解决了:号的问题(在if等函数中随意使用暂未发现问题),但是我又发现有新的问题。函数INTERCEPT需要的并不是一个值数组,而他需要的是一个XY坐标,但是他的表达式里面依旧用的是:号(如:=INTERCEPT(D14:J14,D13:J13)),有没有好一点的解决办法?
在excel中的效果:
image

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

参数都是一个数组

真是遗憾,formula.js本身就不支持INTERCEPT函数的调用,我看到支持库里并没有这个函数(可能是我看的文档并不是官方的文档),我自己改的那些解析器和集成的formula.js需要我提交吗,我写的很随意(虽然有注释)可能需要你整理一下

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

参数都是一个数组

目前我知道的问题有:1.切换中文会报错,应该是src/locale/locale.js文件写的有问题;2.函数触发太频繁了,触发事件可以修改成修改完成,而不是任何动作都触发;3.$符号不知道是否支持,这个也是很常用的符号

from xspreadsheet.

myliang avatar myliang commented on August 16, 2024

你可以提交

from xspreadsheet.

wuganzhi avatar wuganzhi commented on August 16, 2024

你可以提交

已经提交了

from xspreadsheet.

Related Issues (12)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.