Quber 发表于 2023-12-6 12:22:52

V16.2.6 VUE3 合并多个Excel模板到一个Sheet表单中

1、版本号
版本为16.2.6,Vue3。


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

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








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


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、不知道有没有其他可行的方案呢???



Quber 发表于 2023-12-6 16:06:43

本帖最后由 Quber 于 2023-12-6 16:10 编辑

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


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

最终效果:


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



Lynn.Dou 发表于 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

Lynn.Dou 发表于 2023-12-6 17:54:56

:hjyzw: 感谢您分享的解决方案,给您送上金币奖励。
本贴就先结贴了,有问题欢迎另开新帖交流。
页: [1]
查看完整版本: V16.2.6 VUE3 合并多个Excel模板到一个Sheet表单中