实现序列化与反序列化 Excel 表格

2019-02-14 12:29:12 +08:00
 powertoolsteam

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

功能使用介绍:

1.序列化:

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

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

2.反序列化:

通过反序列化可以将之前序列化的 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 中。

1293 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/534873

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX