首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【WPSJS开发】WPSJS项目中对中间数据的两种存储方案

【WPSJS开发】WPSJS项目中对中间数据的两种存储方案

作者头像
Excel催化剂
发布2021-08-18 11:49:16
发布2021-08-18 11:49:16
8970
举报
文章被收录于专栏:Excel催化剂Excel催化剂

因WPSJS项目中,一次仅对一个网页进行处理,用户交互过程中的数据仅在当前网页有效,如果想在其他网页上共享这些数据,需要使用一个中间数据存储的方式进行连接。而当前WPSJS官方里提供了一种中间数据存储方案,笔者实际开发过程中也用了自己探索的另一种方案,在此向大家分享。

使用WPS PluginStorage来存储数据

这个是官方提供的推荐方法,用于记录一些键值对简单数据,对应于浏览器原生的localStorage操作,具体可以查看官方demo的示范。

在笔者的ET催化剂插件里,也用到它来存储形状的位置、名称信息等,方便在其他时候来重新使用它。

此数据库存储的容易有限,最大不超过5M数据,所以一般只用于存储文本类用户窗体表单上交互的配置信息。

在浏览器上存储数据的方案,可能还可以使用IndexedDB的方案,有兴趣的朋友可以探索下,可以突破5M大小,并且永久性存储,相关介绍可参考: http://www.ruanyifeng.com/blog/2018/07/indexeddb.html

使用CustomXMLPart对象存储复杂大容量数据

在VBA对象模型中,有一个非常好用的对象CustomXMLPart,它存储的效果是会在文档上建一个xml节点来存储,用户是无感的,不会在用户看到的工作表单元格区域或其他地方看到。

而且存储的大小没有限制,甚至将一些二进制数据通过序列化为xml文本进行存储,在笔者开发Excel催化剂的图表插入功能等场景里大量使用过。有兴趣可翻看相关文章。

而在ET催化剂中的轮播图制作中,笔者也使用CustomXMLPart对象用于存储图片信息。

从用户上传的网页上,收集到用户的图片,并将其处理为base64文本,然后在生成轮播图时,跳转到一个新的网页上生成,最后这些图片信息经过CustomXMLPart对象作为中间存储,完成了数据的传递过程。

除了作中间交换数据使用,其实还有一个很大的场景是用于集成外部文件到OFFICE文档中,例如将整个网页的文本都存储下来,在下次打开文件时,再释放出来,生成一个新文件供调用。

笔者在ET催化剂的插入本地html文件场景使用了,可以实现插入的本地网页脱离本地文件的影响,直接集成到文档中,下次使用,在不同电脑上仍然可用,缺点是文档文件大小会膨胀起来。

核心代码如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel催化剂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用WPS PluginStorage来存储数据
  • 使用CustomXMLPart对象存储复杂大容量数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档