实现序列化与反序列化 Excel 表格 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
pro/about
powertoolsteam

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

  •  
  •   powertoolsteam 2019 年 2 月 14 日 1587 次点击
    这是一个创建于 2621 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 中。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2788 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 05:26 PVG 13:26 LAX 22:26 JFK 01:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86