表单&函数

阔别多日, SpreadJS新人学习笔记,本周起正式回归!(在断更的这一个月中,我为大家先后录制了14期SpreadJS产品入门系列学习视频,希望帮助那些正在学习和使用 SpreadJS 的同学全面、快速地了解产品,并尽快在实际项目中感受到 SpreadJS强大的前端表格功能!这些视频目前已经在GCDN技术论坛中发布,欢迎大家观看学习,并提出意见和建议。)

本周,我会详细介绍 SpreadJS 的表单及函数,希望我的学习笔记能够帮助你们,从零开始学习 SpreadJS,并逐步精通。

本周学习计划一:SpreadJS 的表单

初始化 SpreadJS 表单

你可以在 SpreadJS 中添加一个或多个表单。如图所示,点击按钮,即可新增、删除、清空表单:

SpreadJS 边框网格线

SpreadJS可自定义是否显示网格线,并允许设置各种边框的样式。

隐藏与显示

SpreadJS 用于控制隐藏显示的代码为:sheet.visible(false)
点击【隐藏】【显示】按钮可依次隐藏、显示表单

缩放

SpreadJS通过以下方法控制缩放:sheet.zoom(number),number的值在0-1之间会缩小,1以上会放大。

行头与列头

SpreadJS可以对行头、列头的样式进行自定义,比如增加行头、合并行头单元格、设置宽度等,还可控制是否显示行头列头,并将行标列表设定为空、数字或字母。

合并单元格

sheet.addSpan() 方法可以实现合并单元格:
 SpreadJS允许用户通过拖拽的方式合并单元格:

冻结行列

SpreadJS可以控制冻结行列,上图中的红线为冻结线,冻结线颜色、样式均可自定义,如将冻结线的颜色设置为红色:sheet.options.frozenlineColor = 'red'

获取与设置数据

SpreadJS 用于操作数据的方法包含:setText、getText、copyTo、moveTo、clear 五种。

举例:

//  如将行索引5、列索引4的内容,复制到行索引6、列索引5,并复制2行1列,可以设置如下参数

sheet.copyTo(5, 4, 6, 5, 2, 1, spreadNS.CopyToOptions.all);

设置公式

SpreadJS支持在单元格中设置公式,如下图实现的简单加法公式:
 

设置字体

SpreadJS提供字体设置,允许用户设置字体风格、大小、斜体等:

设置样式

SpreadJS 可以自定义单元格样式,如背景色、字体颜色、内容排列方向等。此外,还可以设定一套常用的样式模板,一键套用。
SpreadJS单元格的样式在不同的层级结构中具有不同的优先级别, 如下: 单元格 > 行 > 列

精确选择单元格

SpreadJS 可以设定最小选择单元为:单元格、行或列的任意一项,例如设定最小选择列,点选任意单元格会选中整列:

自定义行为

SpreadJS支持撤销/取消撤销操作,快捷键为ctrl+z/ctrl+y。

表单保护

通过设置isProtected属性可以保护表单不被用户编辑。设置protectionOptions属性可以限制用户的各种行为。

例如过滤权限被放开时,点列头下拉框可以进行过滤操作,取消该权限则点不动向下箭头:

允许插入行时,在行头处点击右键,即可插入新行:
 

分组列

对于有分层结构的数据,可以通过
SpreadJS 让数据呈现树形结构,如下图。此外,用户还可以自定义图标、控制checkbox显示状态:

基本函数、INDIRECT、通配符

setFormula用于设置基本函数,如求平均值、合计、最大值和最小值,INDIRECT函数用于返回特定单元格的内容,如INDIRECT(“B4”)返回B4单元格的内容。需要注意:若传参不带引号,则返回单元格所指向的内容,如INDIRECT(E4)返回的是E4所指向的单元格的数据。
如下图:INDIRECT(“B4”) = 丁玉琴

INDIRECT(E4) =
丁玉琴

SpreadJS Demo 示例

以下是我在学习SpreadJS表单的过程中,自己写的Demo示例,供大家参考。

sheetDemo1.zip

sheetDemo2.zip

sheetDemo3_protect_outlineCol.zip

function.zip

本周学习计划二:SpreadJS 的函数

自定义函数

SpreadJS内置了很多函数,包括很多常用的基本函数,但是在遇见较为特殊的方法,基本函数无法满足需求时,可以添加自定义函数。例如,根据三角形的底和高来求三角形的面积,我们可以自定义函数calcuArea,用addCustomFunction方法将该自定义函数加在表单中,再使用setFormula给单元格绑定自定义函数。

数组公式

SpreadJS使用setArrayFormula方法来设置数组公式。如下图,E5到E8便是使用数组公式计算出来的三角形面积

异步函数

当计算方法或者数据不能立刻获取时,可以使用异步函数来进行计算。SpreadJS可使用添加自定义函数的方法来添加并定义异步函数,通过设置defaultValue的值,在计算结果还出来时代替计算结果,通过使用evaluateAsync方法来进行计算,并且在异步计算完毕后使用context.setAsyncResult方法返回SpreadJS 。

如下图,E8位置的数据使用异步函数计算,在前三秒显示【计算中... 】,计算好后显示结果35:
 

您也可获取当前时刻的异步函数,如每秒获取一次当前时刻:

SpreadJS Demo 示例

以下是我在学习 SpreadJS 函数的过程中,自己写的Demo示例,供大家参考。

function.zip

OK,今天先记录到这里,下一周学习计划:
SpreadJS的数据绑定、脏数据和单引号前缀。

PS:文中提到的学习视频和示例源码,都已经上传到SpreadJS官网的【入门视频】中,欢迎大家观看学习。

>>视频地址

从零开始,SpreadJS新人学习笔记【第3周】的更多相关文章

  1. 从零开始,SpreadJS 新人学习笔记(第二周)

    Hello,大家好,我是Fiona.经过上周的学习,我已经初步了解了SpreadJS的目录结构,以及如何创建Spread项目到我的工程目录中.>>还不知如何开始学习SpreadJS的同学, ...

  2. 从零开始,SpreadJS新人学习笔记【第5周】

    复制粘贴.单元格格式和单元格类型 本周,让我们一起来学习SpreadJS 的复制粘贴.单元格格式和单元格类型,希望我的学习笔记能够帮助你们,从零开始学习 SpreadJS,并逐步精通. 在此前的学习笔 ...

  3. 从零开始,SpreadJS新人学习笔记【第4周】

    数据绑定.脏数据和单引号前缀 本周,让我们一起来学习SpreadJS 的数据绑定.脏数据和单引号前缀,希望我的学习笔记能够帮助你们,从零开始学习 SpreadJS,并逐步精通. 在此前的学习笔记中,相 ...

  4. 从零开始,SpreadJS 新人学习笔记

    Hello,大家好,我是Fiona,从事前端开发工作,我十分热爱我的工作和一直默默栽培我的老板(这段请加粗). 前不久,接到老板的安排: 说实话,接到这个需求,我整个人的状态是这样的: 但是,我不能辜 ...

  5. 红帽学习笔记[RHCSA] 第二周

    目录 红帽学习笔记[RHCSA]第二周 环境 第七课[网络配置相关] 在Vmware中添加网卡 将网卡添加到虚拟机上 关于网卡命名规则 配置网络 网络配置命令总结 更改hostname 关于SSH的一 ...

  6. 20145230《java学习笔记》第九周学习总结

    20145230 <Java程序设计>第9周学习总结 教材学习内容 JDBC JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作, ...

  7. 红帽学习笔记[RHCSA] 第一周

    目录 红帽学习笔记[RHCSA] 环境 第一课 关于Shell 命令的基础知识 在终端中敲命令的快捷键 本次课程涉及的命令 第二课 常用的目录结构与用途 本次课程涉及到的命令 第三课 关于Linux的 ...

  8. 201521123103 《Java学习笔记》第二周学习笔记

    一.本周学习总结 1.学习了数据类型的使用:整数类型.浮点类型. boolean类型.数组等以及类型的转换,最重要的是学会了import引用包: 2.学习了string类对象的拼接.字符串池.枚举类型 ...

  9. 201521123047 《Java学习笔记》第二周学习总结

    1. 本周学习总结 -知道并了解到浮点数的误差关系,懂得运java.math.BigDecimal来进行浮点数的精确计算 -对于"="与"=="的区分 -字符串 ...

随机推荐

  1. The Semantics of Constructors: The Default Constructor (默认构造函数什么时候会被创建出来)

    本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记. C++ Annotated Reference Manual中明确告诉我们: default co ...

  2. 洛谷p2375 kmp

    题意 给你一个字符串,让你求一个\(num\)数组,\(num[i]\)为长度为\(i\)的前缀的公共前后缀长度不超过\(\lfloor \frac{i}{2}\rfloor\)的个数, 例如&quo ...

  3. CSS 中蒙版相关设置二三事

    写 蒙版 时会使用透明度,第一反应会使用 opacity 但这个会使子元素继承,蒙版内还有内容会被影响,从而会设置 background 属性的 rgba 值. 需要注意的是 rgba 和 gba 颜 ...

  4. 两列布局实现各自独立滚屏,类似与 scrollNav 的功能。

    现在移动端 web 开发越来越靠近 app 的功能.所以两列布局各自都能实现独立滚动也常见.基于固定侧边栏导航,另一侧实现内容展示. 这个功能的核心在于使用 vh 单位. 其中 CSS 的代码是核心点 ...

  5. Inter IPP 处理图像数据的方法

    Inter IPP没有读取图片和保存图片的函数,需要结合opencv完成这个功能. opencv读到图片以后逐个像素点赋值给IPP显然是不可取的,方法如下: int main(int argc, ch ...

  6. Flutter文本框TextField

    参数详解TextField同时也使用Text 的部分属性: 属性 作用controller 控制器,如同 Android View iddecoration 输入器装饰keyboardType 输入的 ...

  7. Java多线程核心知识(跳槽面试必备)

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...

  8. JS将后台获取毫秒数转换为自定义格式日期

    重写prototype  Date.prototype.Format = function(fmt) { var o = { "M+" : this.getMonth()+1, / ...

  9. Async Task Types in C#

    Async Task Types in C# Extend async to support task types that match a specific pattern, in addition ...

  10. LC 889. Construct Binary Tree from Preorder and Postorder Traversal

    Return any binary tree that matches the given preorder and postorder traversals. Values in the trave ...