找回密码
 立即注册

QQ登录

只需一步,快速开始

极品毛肚
注册会员   /  发表于:2022-5-23 09:57  /   查看:2469  /  回复:7
10金币
本帖最后由 极品毛肚 于 2022-5-24 14:51 编辑

【场景】我通过spread.toJSON方法将表单模板存为JSON,然后在其他spread模板中想替换掉几个sheet页的内容。我获取到sheet页签,然后用sheet.fromJSON去设置内容,结果页签名和页签内容都无法正确设置。
RTX截图未命名123.png
用spread.fromJSON的话可以设置,但是会把原整个表单替换掉。
【问题】
sheet.fromJSON是不是只能用sheet.toJSON出来的数据?有什么办法能将spread.toJSON的数据正确放到sheet.fromJSON里面?
image.png231577758.png

最佳答案

查看完整内容

表单与表单之间,表单与工作簿之间都是存在联系的,并非直接替换就可以。sheet是spread的一个子集,因此sheet.fromJSON只能用sheet.toJSON序列化的数据,spread.fromJSON只能用spread.toJSON序列化的数据,两者无法混用。 从上述的场景来看,可以参考下面的教程合并多个工作簿,然后将多余的表单删除。另外,如果需要合并的表单较多,建议用GcExcel在后端实现。 https://gcdn.grapecity.com.cn/showtopic-93624-1-1.html

7 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-5-23 09:57:25
来自 2#
表单与表单之间,表单与工作簿之间都是存在联系的,并非直接替换就可以。sheet是spread的一个子集,因此sheet.fromJSON只能用sheet.toJSON序列化的数据,spread.fromJSON只能用spread.toJSON序列化的数据,两者无法混用。

从上述的场景来看,可以参考下面的教程合并多个工作簿,然后将多余的表单删除。另外,如果需要合并的表单较多,建议用GcExcel在后端实现。
https://gcdn.grapecity.com.cn/showtopic-93624-1-1.html
回复 使用道具 举报
极品毛肚
注册会员   /  发表于:2022-5-23 13:43:12
3#
Derrick.Jiao 发表于 2022-5-23 13:40
表单与表单之间,表单与工作簿之间都是存在联系的,并非直接替换就可以。sheet是spread的一个子集,因此she ...

如果主要是JSON数据结构的问题,那我可以把sheet的数据剔除出来吗?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-5-23 14:33:36
4#
极品毛肚 发表于 2022-5-23 13:43
如果主要是JSON数据结构的问题,那我可以把sheet的数据剔除出来吗?

不建议去修改json里面的内容,自行修改后容易出现一些难以定位或者无法修复的问题,这种情况下控件本身可能就无法支持了。按照上面描述的场景,建议参考上面提供的链接非方法来实现。
回复 使用道具 举报
极品毛肚
注册会员   /  发表于:2022-5-24 10:02:37
5#
Derrick.Jiao 发表于 2022-5-23 14:33
不建议去修改json里面的内容,自行修改后容易出现一些难以定位或者无法修复的问题,这种情况下控件本身可 ...

如果用sheet.toJSON导出,有些样式会丢失掉
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-5-24 11:01:58
6#
极品毛肚 发表于 2022-5-24 10:02
如果用sheet.toJSON导出,有些样式会丢失掉

是的,因为有些样式是存储在workbook这样的级别上。因此sheet.toJSON主要用于同一个工作簿内的表单序列化与反序列化,如果想要跨工作簿合并表单,请参考上面提供的教程链接。
回复 使用道具 举报
极品毛肚
注册会员   /  发表于:2022-5-24 14:54:29
7#
Derrick.Jiao 发表于 2022-5-24 11:01
是的,因为有些样式是存储在workbook这样的级别上。因此sheet.toJSON主要用于同一个工作簿内的表单序列化 ...

data[key] = data[key].replace(/__builtInStyle/g, keyStr[0])
spreadJson.namedStyles.push(...dataJson.namedStyles)
主要处理里面的样式名冲突问题就可以了
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-5-24 15:29:45
8#
极品毛肚 发表于 2022-5-24 14:54
data[key] = data[key].replace(/__builtInStyle/g, keyStr[0])
spreadJson.namedStyles.push(...dataJs ...

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部