找回密码
 立即注册

QQ登录

只需一步,快速开始

Quber
金牌服务用户   /  发表于:2023-12-6 12:22  /   查看:1894  /  回复:3
1、版本号
版本为16.2.6,Vue3。


2、需求描述
我们想实现的需求是:

我们有4个独立的Excel模板,如下图所示:
image.png413788756.png

image.png621468810.png

image.png467959594.png

image.png26405333.png

现在我们想将这4个模板组合到一个Sheet表单中显示,最终达到的显示效果如下图所示:
image.png519109191.png

3、实现思路

我的实现思路1:
前端分别通过spread.toJSON()方法将那4个Excel模板转换为JSON字符串存储到后台数据库,然后前端在展示合并的界面分别去读取这4个JSON数据,最后分别将第2、3、4中的数据JSON组合到第一个JSON中去,我发现这种方式太复杂了,涉及到样式、公式、图表、浮动元素等……最后放弃了这种方式。


我的实现思路2:
我想通过sheet.toJSON()方法将那4个Excel模板转换为JSON字符串存储到后台数据库,然后前端在展示合并的界面分别用4个隐藏的Sheet去加载sheet.toJSON()导出来的数据,然后通过复制拷贝的方式将4个隐藏Sheet复制到一个新的Sheet中,结果发现sheet.toJSON()方法在还原后样式全部丢失(帖子:https://gcdn.grapecity.com.cn/showtopic-199698-1-1.html),因此,此思路也中断了。。。

4、不知道有没有其他可行的方案呢???



3 个回复

倒序浏览
Quber
金牌服务用户   /  发表于:2023-12-6 16:06:43
推荐
本帖最后由 Quber 于 2023-12-6 16:10 编辑

谢谢,根据你的一些提示和之前问题的一些综合查看,此问题已解决,我将合并的实现封装到一个方法中了,具体源码参见附件中。


调用方式:
  1. SpreadCommon.mergeSpreadJson(GC, spread, [BtJson, CsJson, NrJson, BwJson], '新的表单名称');
复制代码
其中的BtJson、CsJson、NrJson和BwJson分别是问题中提到的4个Excel模板通过Spread导出的完整JSON数据对象

最终效果:
image.png351611632.png

希望对大家有所帮助!!!



commMain.zip

1.92 KB, 下载次数: 331

封装的方法源码

评分

参与人数 1金币 +500 收起 理由
Lynn.Dou + 500 赞一个!

查看全部评分

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-12-6 15:18:02
沙发
您好,
关于思路2,样式丢失的可能性原因是存在spread级别的命名样式,在序列化的时候没有将这部分样式复制过来,所以样式丢失。
在您提到的另篇贴子中技术顾问也有介绍到。
命名样式相关资料可以参考学习指南:
https://demo.grapecity.com.cn/sp ... sic-style#timestamp

关于处理方案,可以参考下这篇文章,红框部分代码为spread级别命名样式的复制思路:
https://gcdn.grapecity.com.cn/showtopic-93624-1-1.html
image.png181032408.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-12-6 17:54:56
地板
感谢您分享的解决方案,给您送上金币奖励。
本贴就先结贴了,有问题欢迎另开新帖交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部