前言

SpreadJS表格控件有着很强大的功能:序列化与反序列化表格。熟练使用该功能达到加快开发进度,减少代码量,降低业务逻辑复杂度,处理一些特殊逻辑需求等效果。

功能使用介绍:

序列化:

通过序列化可以将当前的整个spread序列化成为JSON格式进行存储。通过spread.toJSON(serializationOption)方法就可以做到,方法中还提供一些选项可以用来控制序列化的结果:

var serializationOption = { ignoreFormula: true, // 如果设置为true则忽略公式,不会序列化公式,只会将公式计算的结果序列化到JSON中。 ignoreStyle: true, // 如果设置为true则忽略样式,所有style中的属性将不会序列化到JSON中 rowHeadersAsFrozenColumns: true, // 将行头转换为冻结列序列化 columnHeadersAsFrozenRows: true, // 将列头转换为冻结行序列化 includeBindingSource: true // 将数据绑定的数据源也序列化到json中}

反序列化:

通过反序列化可以将之前序列化的JSON格式的对象反序列化成为页面进行展示。通过spread2.fromJSON(json, jsonOptions)方法可以做到,同样方法中也提供一些选项来控制反序列化的结果:

var jsonOptions = { ignoreFormula: true, // 如果设置为true则忽略公式,反序列化时忽略公式,只会将公式计算的结果反序列化展示到页面中。 ignoreStyle: true, // 如果设置为true则忽略样式,不会将style中的属性反序列化展示 frozenColumnsAsRowHeaders: true, // 将冻结列转换为行头  frozenRowsAsColumnHeaders: true, // 将冻结行转换为列头 doNotRecalculateAfterLoad: true, // 反序列化后公式不进行重新计算}

常见使用场景:

1、在设计器中使用序列化和反序列化:

通过SpreadJS提供的设计器可以快速的进行模板设计,设计器中可以通过拖拽,点击,配置等操作快速进行模板设置从而节省大量的代码编辑操作。当在设计器中设计好模板之后可以通过设计器提供的导出功能,将模板导出成ssjson文件(该文件就是将序列化toJSON之后生成JSON格式保存成的文件)。

在页面展示的时候我们可以在js中读取该文件(例如jquery的$.getJSON(),通过js文件读取等方式),并将获取到的json对象通过spread.fromJSON反序列化成页面展示。这样就完成了模板的快速构建。

2、差异化处理

在用户的业务逻辑中经常需要进行一些差异化的处理,例如:填报模板的中设置的公式,不希望在导出的时候被导出。那么可以通过在tojson中进行设置来忽略。

3、多列头的导出

SpreadJS中有一些扩展的功能例如多列头是Excel不支持的,而该功能经常在业务逻辑中被使用,所以如果有同时需要导出Excel的处理这种鱼和熊掌不可兼得的事情往往会产生很多困扰,那么为了解决这样的问题,在导出之前的toJSON时就可以通过设置columnHeadersAsFrozenRows属性,之后将生成的json在导出时传递给ExcelIO,这样导出的Excel中会将SpreadJS的多列头通过冻结行来进行显示。例如下面的表格:

设置了多行头与多列头,要想导出Excel中包含行头和列头的信息,可以在toJSON的时候设置rowHeadersAsFrozenColumns与columnHeadersAsFrozenRows这两个属性,那么导出之后就可以将行头列头信息显示在Excel中,像这样:


SpreadJ

纯前端表格控件SpreadJS,是市面上布局与功能都与 Excel 高度类似的一款表格控件,全中文操作界面,适用于.NET、Java、移动端等多个平台的类 Excel 数据开发,备受华为、中通、民航飞行学院等国内知名企业客户青睐。

点击“了解更多”,下载SpreadJS最新试用版

↓↓↓

序列化_SpreadJS序列化与反序列化表格Serialization+Deserialization相关推荐

  1. java序列化 反序列化_Java序列化– Java序列化

    java序列化 反序列化 Serialization in Java was introduced in JDK 1.1 and it is one of the important feature ...

  2. baseresponse响应类_内部类、响应类Response、序列化基类、反序列化、全局局部钩子...

    一.内部类 1.概念:将类定义在一个类的内部,被定义的类就是内部类 2.特点:内部类及内部类的所以名称空间,可以直接被外部类访问的 3. 应用:通过内部类的名称空间,给外部类额外拓展一些特殊的属性(配 ...

  3. 魔方APP项目-04-用户模块API接口、Marshmallow,基本构造器(Schema),Schema数据序列化、Schema数据反序列化、反序列化对数据验证、模型构造器(ModelSchema)

    用户模块 当前开发的项目属于社交类型项目,所以关于用户的信息和功能直接贯穿了整个项目.所以此处实现用户模块功能,我们先把用户基本信息构建起来,并通过基本信息实现用户注册登录相关功能,后面遇到业务再继续 ...

  4. java byte序列化,java对象序列化byte[] and byte[]反序列化对象--转

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  5. 对象序列化流与对象反序列化流(ObjectOutputStream,ObjectInputStream)

    这个连接包含了常用的流------IO流(总篇章) 对象序列化:就是将对象保存到磁盘中,或者在网络中传输对象 这种机制就是使用一个字节序列表示一个对象,该字节序列包含:对象的类型.对象的数据和对象中存 ...

  6. java实现序列化_java 序列化实现方式总结

    什么是序列化,可能大家都知道,但又不很清楚,呵呵,就像我一样,下面是一段百度百科的说明,说的很清楚,可以参考下 序列化 (serialization) 将对象的状态信息转换为可以存储或传输的窗体的过程 ...

  7. java c 序列化_Java 序列化

    序列化(对象写入文件)   反序列化(从文件读取对象) public class Demo01 { public static void main(String[] args) throws IOEx ...

  8. java kryo_kryo序列化 - Java序列化期间的错误

    我的应用程序有大量域对象,它们通过spring-session被序列化到Redis存储中.我试图使用Kryo(4.0.0)进行自动序列化,而不使对象明确可序列化.kryo序列化 - Java序列化期间 ...

  9. java map 实现 序列化,MapReduce序列化

    序列化就是把内存中的对象转换成字节序列以便于存储到磁盘(持久化)和网络传输. 反序列化就是将字节序列或者是持久化的数据转换成内存中的对象. 内存中的对象只能本地进程使用,断掉后就消失了,也不能被发送到 ...

最新文章

  1. 【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?
  2. linux IO多路复用 select epoll
  3. java home not set_Error: JAVA_HOME is not set and could not be found.
  4. 智能商业大会构造信息化交流平台
  5. emui消息推送服务器,别再抱怨,这次或许真的轮到你了,EMUI9.1推送进度再次更新...
  6. Python实现给指定的微信朋友发信息
  7. Oracle数据库迁移测试数据,Oracle数据库的数据迁移方法
  8. 搜狗语音输入提示服务器繁忙,讯飞语音输入如何提高识别率 提高方法
  9. EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public?
  10. StringEscapeUtils的资料
  11. Mysql复合索引的顺序和必要值
  12. 基坑计算理论m法弹性支点法_建筑基坑支护考题汇总.doc
  13. 软件工程毕业设计课题(2)基于python的毕业设计python旅游网站系统毕设作品
  14. 例3.2 计算存款利息
  15. cad直线和圆弧倒角不相切_cad中绘制圆角倒角有哪些技巧?
  16. Stars in Your Window 【POJ - 2482】【线段树扫描线】
  17. 苹果cmsV10韩剧TV简约影视网站源码电脑和手机模板自适应
  18. 谈谈互联网推广:从了解用户开始
  19. 【web】【django】datatable的button扩展实现纯前端下载和copy指定列内容,以及django的HTTPResponse实现下载功能
  20. 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。

热门文章

  1. 【面试题】序列化的 10 几个问题
  2. Spark : DNS resolution failed for url in bootstrap.servers xx:9092
  3. android系统广播 定向广播,Android之定向广播
  4. 职称计算机excel2015年,2015年职称计算机《Excel2003》最新章节练习题(5)
  5. but was actually of type [com.sun.proxy.$Proxy13]
  6. Python中 模块、包、库
  7. 团队作业3:团队项目原型设计与开发
  8. spring 14-Spring框架JDBC操作
  9. 646. Maximum Length of Pair Chain 最长的链条长度
  10. Java 实例 - 测试两个字符串区域是否相等