找回密码
 立即注册

QQ登录

只需一步,快速开始

齐天大猫

金牌服务用户

49

主题

132

帖子

447

积分

金牌服务用户

积分
447
齐天大猫
金牌服务用户   /  发表于:2024-7-8 18:25  /   查看:1382  /  回复:11
本帖最后由 Ellia.Duan 于 2024-7-25 14:33 编辑

spread模板sjs文件格式open的影响有哪些?

我们在基于500+以上Excel测试中发现,好多模板在使用sjs格式open时间反而大于ssjson格式fromJson时间

fromJson:
  1. template.dynamicReferences = false
  2.   spread.fromJSON(template, {
  3.     doNotRecalculateAfterLoad,
  4.     ignoreFormula: false,
  5.   })
复制代码


sjs:
  1. spread.open(
  2.       blob,
  3.       function () {
  4.         resolve()
  5.       },
  6.       function (e) {
  7.         reject(e)
  8.       },
  9.       { calcOnDemand: true, dynamicReferences: false, fullRecalc: true, openMode: GC.Spread.Sheets.OpenMode.normal },
  10.     )
复制代码


11 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-9 09:42:26
沙发
您好,请问您在fromJSON时是否开启了 doNotRecalculateAfterLoad 选项?
回复 使用道具 举报
齐天大猫
金牌服务用户   /  发表于:2024-7-9 09:55:52
板凳
Joestar.Xu 发表于 2024-7-9 09:42
您好,请问您在fromJSON时是否开启了 doNotRecalculateAfterLoad 选项?

开启了的
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-9 10:52:12
地板
了解了,在doNotRecalculateAfterLoad为true时,SSJSON在导入后将不会重新计算。

而在打开SJS文件时,您开启了fullRecalc,这意味着SJS文件在导入后将会重新计算其中的所有公式都会重新计算。

同一个文件,导入后重算和不重算,所消耗的时间是完全不同的,且如果公式量很大的情况下,重算消耗的时间会更多。
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-9 11:11:35
5#
Joestar.Xu 发表于 2024-7-9 10:52
了解了,在doNotRecalculateAfterLoad为true时,SSJSON在导入后将不会重新计算。

而在打开SJS文件时,您 ...

原来是这样哈,有道理,受教了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-9 11:12:07
6#
eat_grape_5 发表于 2024-7-9 11:11
原来是这样哈,有道理,受教了

回复 使用道具 举报
齐天大猫
金牌服务用户   /  发表于:2024-7-9 11:23:03
7#
Joestar.Xu 发表于 2024-7-9 10:52
了解了,在doNotRecalculateAfterLoad为true时,SSJSON在导入后将不会重新计算。

而在打开SJS文件时,您 ...

    刚刚试了一个相对复杂的excel,sjs打开fullRecalc设置为false后,fromjson的时间大概在800多毫秒,而sjs open时间大概在1100毫秒。
    另外针对比较简单不带任何公式的template,sjs open的时间大多也比fromjson时间长(sjs:100+毫秒,ssjson:30+毫秒)
回复 使用道具 举报
齐天大猫
金牌服务用户   /  发表于:2024-7-9 15:50:00
8#
针对相对简单的template,分别tojson后对比了一下,发现sjs文件tojson后比ssjson多了一部分data.dataTable,不太清楚这里会不会影响open的效率。
image.png541949767.png
回复 使用道具 举报
齐天大猫
金牌服务用户   /  发表于:2024-7-9 16:10:57
9#
齐天大猫 发表于 2024-7-9 15:50
针对相对简单的template,分别tojson后对比了一下,发现sjs文件tojson后比ssjson多了一部分data.dataTable ...

分别上传了2种情况下的模版文件,sjs的打开时间都比ssjson打开时间长

复杂.zip

802.18 KB, 下载次数: 344

简单.zip

5.94 KB, 下载次数: 348

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-9 17:35:49
10#
您好,在官网的描述中,“新的 SJS 格式在处理非常大的 Excel 文件时显著提高了加载时间和内存使用情况,并且与以前的 SpreadJS 版本相比,重新保存时大大减小了文件大小。”,这并不意味着在任何情况下,SJS 格式的打开速度都比 SSJSON 快,毕竟 SJS 的文件大小相比SSJSON已经有了大幅的缩减。

image.png113145140.png

究其根本,SJS 文件类型实际上是一个压缩包,其中包含了多个关于WorkBook的小文件,而 SSJSON 只有一个文件,从文件读取的角度上来说,读取一个文件和读取一系列文件所需要花费的时间也是不一样的。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部