Comments (31)
不做集成,不做依赖
但是你可以二次开发自己集成
from xspreadsheet.
建议你用这个版本 https://github.com/myliang/x-spreadsheet
from xspreadsheet.
from xspreadsheet.
不支持IF函数, 你可以formula.js中添加
from xspreadsheet.
不支持IF函数, 你可以formula.js中添加
我已经成功的扩展了几个函数,但是现在遇到一些问题,请问有没有交流群,或者可否加个好友交流一下
from xspreadsheet.
没有交流群,有问题直接这里反馈就行
from xspreadsheet.
if表达式里面的值传递问题,这种的值该怎么传?传到后台的应该是一个字符串 “1=1”,或者是一个布尔类型的值
from xspreadsheet.
可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧
from xspreadsheet.
可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧
这是在模拟Excel的if函数,如果改动太大,客户不愿意学习新的语法,我在想怎么判断+-*/<>=这些运算符,从而将运算符两边的值拿到(如将A5的值1拿到,A6的值1拿到),然后拼接成一个新的字符串(如“1=1”)发送给逻辑运算函数。如果需要这么做,我该到源码的哪儿去修改?
from xspreadsheet.
可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧
我是这样想的,拿到参数列表(所有参数),然后用,分割成数组,然后对每个参数进行判断,如果出现运算法,就触发值解析,但是不知道在哪儿去实现,这边的项目比较着急,可能没时间慢慢去看源码
from xspreadsheet.
可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧
我是这样想的,拿到参数列表(所有参数),然后用,分割成数组,然后对每个参数进行判断,如果出现运算法,就触发值解析,但是不知道在哪儿去实现,这边的项目比较着急,可能没时间慢慢去看源码
如果是生产环境,我其实不建议你使用,我这个项目的目的更多供大家学习,二次开发
暂时表达式计算不支持判断条件,要支持修改起来应该不难,我今天晚上可以看看
from xspreadsheet.
可以这样,参数都用逗号分隔,这样好处理,如果第一个参数等于是第二个参数...能明白了吧
我是这样想的,拿到参数列表(所有参数),然后用,分割成数组,然后对每个参数进行判断,如果出现运算法,就触发值解析,但是不知道在哪儿去实现,这边的项目比较着急,可能没时间慢慢去看源码
如果是生产环境,我其实不建议你使用,我这个项目的目的更多供大家学习,二次开发
暂时表达式计算不支持判断条件,要支持修改起来应该不难,我今天晚上可以看看
目前知道的所有web在线编辑excel的都是收费的,你这个已经做了很多东西,我们后期可以一起继续完善,如果要自己实现,会更浪费很多的时间。我提供的那个思路是完全可以的,函数实现不用自己造轮子,已经有开源的项目可以使用,我就使用的formula.js。能告诉我一下你的赋值事件在哪儿触发的吗,我是java后端,对前端不是很了解,找起来有点浪费时间
from xspreadsheet.
https://github.com/myliang/x-spreadsheet/blob/master/src/core/cell.js
from xspreadsheet.
@wuganzhi 我修改一下,最新版本可以支持IF函数
from xspreadsheet.
@wuganzhi我修改一下,最新版本可以支持IF函数
我在尝试写一个解释器,把类似A1=Z1这样的表达式替换成真正的值,从而拼接成一个完整的表达式。如A1=B2,解释完之后应该为2=4这样的式子,然后将他完整的传给formula.js,formula.js有高达300多个函数库,这样也不用每次扩展函数都需要修改源代码了,直接将表达式传给formula.js,他会帮我做好运算,然后返回给我一个值,传给formula.js可以直接是=号后面的所有东西(解释完之后的)
from xspreadsheet.
@wuganzhi我修改一下,最新版本可以支持IF函数
我刚刚看了一下,对if的支持并不行,会报以下错误(IF函数还可以写AND和OR如:IF(AND(A1=A2,A3>A5,A1<A5),"true","false")这样的表达式)
from xspreadsheet.
其实再加个and函数就OK,我不喜欢依赖第三方,确实用不到那么多函数
from xspreadsheet.
当然你可以二次开发,完全替换成formulajs
from xspreadsheet.
当然你可以二次开发,完全替换成formulajs
是的,我在尝试进行二次开发,但是我觉得xspreadsheet有必要留一个接口用来扩展第三方库,这样扩展性会好一些
from xspreadsheet.
其实内部的foemula就是,只是接口没有暴露出来
from xspreadsheet.
if函数 @myliang 报错地点是top没有拿到栈中的数据,不知道你传到foemula里面的表达式是不是解析过的
from xspreadsheet.
是解析过的,
from xspreadsheet.
是解析过的,
如果各种复杂的表达式都能解析,那扩展起来确实就很方便了
from xspreadsheet.
加减乘除,函数扩展就行了
from xspreadsheet.
加减乘除,函数扩展就行了
我已经将IF等函数完美的运行起来,现在遇到的一个新问题就是:号选择的问题,目前正在解决。我想问的是excel其他的所有函数:号选择多个值之后,得到的是一个数组吗?图片是已经处理过的表达式
from xspreadsheet.
参数都是一个数组
from xspreadsheet.
参数都是一个数组
我解决了:号的问题(在if等函数中随意使用暂未发现问题),但是我又发现有新的问题。函数INTERCEPT需要的并不是一个值数组,而他需要的是一个XY坐标,但是他的表达式里面依旧用的是:号(如:=INTERCEPT(D14:J14,D13:J13)),有没有好一点的解决办法?
在excel中的效果:
from xspreadsheet.
参数都是一个数组
真是遗憾,formula.js本身就不支持INTERCEPT函数的调用,我看到支持库里并没有这个函数(可能是我看的文档并不是官方的文档),我自己改的那些解析器和集成的formula.js需要我提交吗,我写的很随意(虽然有注释)可能需要你整理一下
from xspreadsheet.
参数都是一个数组
目前我知道的问题有:1.切换中文会报错,应该是src/locale/locale.js文件写的有问题;2.函数触发太频繁了,触发事件可以修改成修改完成,而不是任何动作都触发;3.$符号不知道是否支持,这个也是很常用的符号
from xspreadsheet.
你可以提交
from xspreadsheet.
你可以提交
已经提交了
from xspreadsheet.
Related Issues (12)
- 关于bug HOT 2
- 请问如何在Vue中以组件的方式使用? HOT 1
- expr2xy on merged cells
- Files not opening properly or opening with console error if aggregate formula is present
- 单元格中最后一个字符无法删除
- 内容无法删尽 HOT 1
- Where is documentation and minified files HOT 3
- Keyboard not working as expected HOT 2
- When is the first release expected? HOT 2
- 关于公式的扩展 HOT 2
- 关于创建更多的列 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xspreadsheet.