找回密码
 立即注册

QQ登录

只需一步,快速开始

yuanxu1614

中级会员

45

主题

138

帖子

738

积分

中级会员

积分
738

微信认证勋章

yuanxu1614
中级会员   /  发表于:2020-1-3 15:12  /   查看:6523  /  回复:14
200金币
问题:在spreadjs版本12中使用的copysheet代码在spreadjs13版本中不适用(会崩掉“message”:"Uncaught TypeError: Cannot read property ''getSheetFromName" of undefined)。
相关代码:
var sheet = spread.getSheetFromName("折线图");
var  newSheet  = new GC.Spread.Sheets.Worksheet("newSheet");

newSheet.formJSON(JSON.parse(JSON.stringify(sheet.toJSON())));
newSheet.name(zhexiantu);
spread.addSheet(3,newSheet);



然后解决方法,将红色的代码位置变换了以下就好用了。
相关代码:
var sheet = spread.getSheetFromName("折线图");

var  newSheet  = new GC.Spread.Sheets.Worksheet("newSheet");

spread.addSheet(3,newSheet);

newSheet.formJSON(JSON.parse(JSON.stringify(sheet.toJSON())));

newSheet.name(zhexiantu);


红色代码变更位置后出现的相关问题:

红色代码变更之前(12版本),总代码耗时9秒;

红色代码变更之后(13版本),总代码耗时59秒;

求解,为什么代码移动了一下位置,相差了50秒事件,还有,针对于13版本这个问题,能不能给个优化的方法。






demo.zip

78.43 KB, 下载次数: 69

demo.zip

78.43 KB, 下载次数: 63

最佳答案

查看完整内容

问题是这样的,您在V12版本下复制表单的方法是有问题的,如果您要在导入模板时复制表单可以用如下的方式实现:

14 个回复

倒序浏览
最佳答案
最佳答案
Fiooona
论坛元老   /  发表于:2020-1-3 15:12:43
来自 15#
问题是这样的,您在V12版本下复制表单的方法是有问题的,如果您要在导入模板时复制表单可以用如下的方式实现:
  1. reader.onload = function(evt){
  2.     var fileString = evt.target.result;
  3.     var jsonObj = JSON.parse(fileString);
  4.     if(jsonObj.MyData){
  5.         alert(jsonObj.MyData);
  6.     }    console.time('V13')    //折线图
  7.     var tempObj = JSON.stringify(jsonObj.sheets["折线图"]);    //zhexiantu
  8.     jsonObj.sheets["zhexiantu"] = JSON.parse(tempObj);
  9.     jsonObj.sheets["zhexiantu"].name = "zhexiantu";
  10.     jsonObj.sheets["zhexiantu"].index = 4;    //data11
  11.     jsonObj.sheets["data11"] = JSON.parse(tempObj);
  12.     jsonObj.sheets["data11"].name = "data11";
  13.     jsonObj.sheets["data11"].index = 5;    //data22
  14.     jsonObj.sheets["data22"] = JSON.parse(tempObj);
  15.     jsonObj.sheets["data22"].name = "data22";
  16.     jsonObj.sheets["data22"].index = 6;    jsonObj.sheetCount = 7;
  17.     spread.fromJSON(jsonObj,{doNotRecalculateAfterLoad: true});
  18.     console.timeEnd('V13');
  19. };
复制代码

13.0.2Demo.zip

2.17 MB, 下载次数: 64

组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-1-3 16:41:23
2#
未能复现您描述的问题, 可以查看我的demo,按您的逻辑写完加载到复制预计3-4秒

可以在我的Demo的基础上复现下您的问题

13.0.2测试Demo.zip

2.1 MB, 下载次数: 117

组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
yuanxu1614
中级会员   /  发表于:2020-1-3 17:19:56
3#
Fiooona 发表于 2020-1-3 16:41
未能复现您描述的问题, 可以查看我的demo,按您的逻辑写完加载到复制预计3-4秒

可以在我的Demo的基础上 ...

由于网络环境原因,我没办法把你这个放到我现在的工程里。是我说的有问题,我是用的是12.1.4版本和13.0.1版本的spreadjs。你能帮我试一下13.0.1的英文版吗?麻烦你了谢谢。
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-1-3 18:02:23
4#
我试的13.0.1也没有问题,
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
yuanxu1614
中级会员   /  发表于:2020-1-6 15:36:17
5#
Fiooona 发表于 2020-1-3 18:02
我试的13.0.1也没有问题,

这个和没有license有没有关系啊?我试了你这个是好用的,我们12版本是有license的,13版本没有,会不会和这个有关系啊
回复 使用道具 举报
yuanxu1614
中级会员   /  发表于:2020-1-6 16:03:18
6#
yuanxu1614 发表于 2020-1-6 15:36
这个和没有license有没有关系啊?我试了你这个是好用的,我们12版本是有license的,13版本没有,会不会和 ...

麻烦你看一下,这样写好像就是崩掉了。

13.0.2Demo (2).zip

2.19 MB, 下载次数: 76

回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-1-6 16:56:16
7#
那麻烦您做一下对应的修改,先添加sheet ,再 用fromJSON复制一份sheet页:
  1. var sheet = spread.getSheetFromName("折线图");
  2. var  newSheet  = new GC.Spread.Sheets.Worksheet("newSheet");
  3. spread.addSheet(3,newSheet);
  4. spread.suspendPaint();
  5. newSheet.fromJSON(JSON.parse(JSON.stringify(sheet.toJSON())));
  6. newSheet.name('zhexiantu');
  7. spread.resumePaint();
复制代码
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
yuanxu1614
中级会员   /  发表于:2020-1-6 17:24:00
8#
Fiooona 发表于 2020-1-6 16:56
那麻烦您做一下对应的修改,先添加sheet ,再 用fromJSON复制一份sheet页:

这样是可以解决,又回到了我最初的问题了,这样互换的话,用时会很长,有没有解决办法,因为我们不只是复制这一个页,大概有30个。
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-1-6 18:19:23
9#
明白了,那现在就是性能的问题了,用您提供的ssjson加载并没有明显性能问题大概2-3秒加载,因为我们需要能复现用户的问题才能给出对应的解决方案,所以要加载“59秒”这个问题 需要怎么复现呢? 可以提供复现步骤吗?
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部