找回密码
 立即注册

QQ登录

只需一步,快速开始

hongshanshan SpreadJS 开发认证
高级会员   /  发表于:2021-10-24 17:17  /   查看:2396  /  回复:5
模板excel有一百多个sheet,没次打开整个文件的json,都需要时间,
目前想把这一百多个sheet分成各自的sheet json进行保存,用户想看哪个,就只调用这个sheet的json

获取sheet的json后,再重新赋值到新的spread,样式都丢了

代码:
excelIO.open(file, function(json) {
               // 左边直接赋值拿到的文件json
                    self.spreadIdLeft.fromJSON(json);
                    // 右边是拿到左边的sheet  json,再赋值给对应的shett页
               const activeSheet = self.spreadIdLeft.getActiveSheet();
               const sheetJson = activeSheet.toJSON({ includeBindingSource: true });
                   self.spreadIdRight.getActiveSheet().fromJSON(sheetJson);
            }, function(e) {}, {});


image.png502190246.png


test.rar

7.43 KB, 下载次数: 130

5 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-10-25 09:45:20
沙发
因为sheet中只会保存当前sheet中设置的样式,但是样式中还有一种样式是全局生效的样式,例如Excel中的buildinstyle,这部分是在Spread节点下保存的。

所以你如果单sheet保存确实会面临样式丢失的问题。这个只能您根据实际情况将这些样式单独保存。

这样还有另外一个问题,如果旧的spread跟新的spread中全局样式产生了重名的时候该怎么办,这些都是您的代码中要去考虑进去的问题
回复 使用道具 举报
hongshanshanSpreadJS 开发认证
高级会员   /  发表于:2021-10-25 10:47:00
板凳
Clark.Pan 发表于 2021-10-25 09:45
因为sheet中只会保存当前sheet中设置的样式,但是样式中还有一种样式是全局生效的样式,例如Excel中的build ...

如果文件导入后,我把sheet都删除了,保留一份没有sheet的spread,是否样式就保留了,然后再引入单个sheet,是否可行?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-10-25 10:49:52
地板
理论上可以,您可以试一下
回复 使用道具 举报
hongshanshanSpreadJS 开发认证
高级会员   /  发表于:2021-10-25 11:00:40
5#
Clark.Pan 发表于 2021-10-25 10:49
理论上可以,您可以试一下

刚验证了,可行,谢谢哈
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-10-25 11:06:24
6#
不客气,那就结贴了,有什么问题欢迎另开新帖进行询问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部