找回密码
 立即注册

QQ登录

只需一步,快速开始

tiny88

注册会员

12

主题

40

帖子

104

积分

注册会员

积分
104
tiny88
注册会员   /  发表于:2024-8-14 11:34  /   查看:1497  /  回复:19
需求背景:模版里有一个sheet页比较特殊,需要保存这个sheet页里的数据,下次加载模版时候直接显示旧数据。

发现问题:模版有改动比如字体调整,加载新模版再显示旧数据样式会错乱。
代码逻辑:1.加载模版文件 2.获取json数据并显示,spread.fromJSON(data.json); 3.显示旧数据spread.getSheetFromName("标准曲线").fromJSON(obj.sheetData)
image.png331943358.png
这是原来内容,旧数据显示正常的效果
image.png401522521.png
这是模版,仅仅调整了字体大小和加粗
image.png618387145.png
旧数据显示样式错乱

19 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-8-14 17:03:14
沙发
您好!根据描述,您更换了新的模板文件之后出现的问题吗?需要您提供一个能够复现问题的完整demo。
回复 使用道具 举报
tiny88
注册会员   /  发表于:2024-8-15 14:53:43
板凳
Wilson.Zhang 发表于 2024-8-14 17:03
您好!根据描述,您更换了新的模板文件之后出现的问题吗?需要您提供一个能够复现问题的完整demo。


您好,该问题很容易复现,你们可以试一下吗?
11.png849209899.png
这是原表格显示正常,let qxsheet = spread.getSheetFromName("标准曲线");

_jsonData=qxsheet.toJSON(),通过这样获取到该sheet页的json数据。
下面的图是我用一个新的表格组件去显示这个json,代码是spread.getSheet(0).fromJSON(_jsonData),结果同样是样式错乱。

2.png279675902.png



回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-15 17:44:21
地板
本帖最后由 Wilson.Zhang 于 2024-8-15 17:45 编辑
tiny88 发表于 2024-8-15 14:53
您好,该问题很容易复现,你们可以试一下吗?

这是原表格显示正常,let qxsheet = spread.getSheetF ...

我们需要参考您模板中的所有设置信息,才能更准确地分析产生问题的原因,所以请您提供给一个完整的demo文件。
回复 使用道具 举报
tiny88
注册会员   /  发表于:2024-8-16 09:07:40
5#
Wilson.Zhang 发表于 2024-8-15 17:44
我们需要参考您模板中的所有设置信息,才能更准确地分析产生问题的原因,所以请您提供给一个完整的demo文 ...


你好,demo见附件
image.png554336852.png

vue-project2.rar

101.07 KB, 下载次数: 179

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-16 17:44:38
6#
tiny88 发表于 2024-8-16 09:07
你好,demo见附件

收到您的demo,调研后向您同步结论,请您等候!
回复 使用道具 举报
tiny88
注册会员   /  发表于:2024-8-19 16:02:19
7#
Wilson.Zhang 发表于 2024-8-16 17:44
收到您的demo,调研后向您同步结论,请您等候!

你好,有结果了吗
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-19 16:51:06
8#
tiny88 发表于 2024-8-19 16:02
你好,有结果了吗

您好!有结论了,给您同步下:
SpreadJS中的样式被保留在Workbook中,您的代码是将Worksheet导出为json数据再导入到另一个Workbook的Worksheet,这才导致样式丢失。如果想要保留样式,应该在Workbook上导出json数据,在导入时只保留您需要的sheet页而删除其他sheet页即可。此外还有一种方法,可以在Worksheet上导出json数据,同时从Workbook上获取命名样式,导入json数据得到新的Worksheet后为该Worksheet设置命名样式即可。请参考以下链接了解详情:
https://jscodemine.grapecity.com/share/gFQcxf2CE0i9U-PNKNGyHQ/?IsEmbed=false&Theme=Unset&PreviewDirection=0&IsEditorShow=true&IsExplorerShow=true&IsPreviewShow=true&IsConsoleShow=true&IsRunBTNShow=false&IsResetBTNShow=false&IsOpenInCodemineBTNShow=false&PanelWidth=30&defaultOpen=%7B%22OpenedFileName%22%3A%5B%22%2Findex.html%22%2C%22%2Fsrc%2Fcopyfile.js%22%2C%22%2Fsrc%2Fapp.js%22%5D%2C%22ActiveFile%22%3A%22%2Fsrc%2Fapp.js%22%7D

回复 使用道具 举报
tiny88
注册会员   /  发表于:2024-8-19 17:54:50
9#
Wilson.Zhang 发表于 2024-8-19 16:51
您好!有结论了,给您同步下:
SpreadJS中的样式被保留在Workbook中,您的代码是将Worksheet导出为json ...
此外还有一种方法,可以在Worksheet上导出json数据,同时从Workbook上获取命名样式,导入json数据得到新的Worksheet后为该Worksheet设置命名样式即可。

我试了好像不行,可能是方法用错了,可否给出代码示例?我参考下
回复 使用道具 举报
tiny88
注册会员   /  发表于:2024-8-20 09:06:15
10#
Wilson.Zhang 发表于 2024-8-19 16:51
您好!有结论了,给您同步下:
SpreadJS中的样式被保留在Workbook中,您的代码是将Worksheet导出为json ...

image.png298377379.png

方案一不行,我们要用新模板的样式,旧的数据里样式不需要,上图是按照你们思路写的,发现没有效果,请帮忙看下哪里写的有问题。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部