找回密码
 立即注册

QQ登录

只需一步,快速开始

tutu

注册会员

24

主题

64

帖子

182

积分

注册会员

积分
182
tutu
注册会员   /  发表于:2020-12-4 10:35  /   查看:2996  /  回复:6
您好,我遇到一个这样的问题!!!
将spreadA中的sheet添加到spreadB中,出现样式混乱问题,想知道这个问题咋解决。


如图
image.png943744506.png image.png476419066.png


image.png242544860.png
image.png534910277.png
image.png312214659.png

6 个回复

倒序浏览
tutu
注册会员   /  发表于:2020-12-4 11:04:14
沙发
这是demo,麻烦看一下,谢谢

demo.rar

2.7 MB, 下载次数: 70

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-12-4 12:13:14
板凳
修改了您提供的demo代码,如下:
image.png26375121.png
  1. var jsonA = spreadA.toJSON();
  2.     spreadB.fromJSON(jsonA)
复制代码
最终效果如下图,您看下是否是您期待的效果:
image.png734765319.png
回复 使用道具 举报
tutu
注册会员   /  发表于:2020-12-4 14:03:19
地板
本帖最后由 tutu 于 2020-12-4 14:24 编辑

您这种方式处理,会将SpreadA中的sheet覆盖掉,不符合我这边的业务,想知道以添加sheet方式处理,如何解决这个问题。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-12-4 17:22:57
5#
本帖最后由 lynn512 于 2020-12-4 17:24 编辑

您的需求是 复制spreadA的sheet 至 spreadB的某一个sheet 对吗?样式混乱是由于您导入的excel文件使用了大量的名称样式,并全局注册到了spreadA中。
image.png778754577.png
当您导出某个sheet页时,并未携带这些名称样式,所以spreadB中才会出现样式混乱。
具体原理请参考此篇技术博客:https://www.grapecity.com.cn/blogs/sjs-single-sheet-loading
解决方法请参考下方代码:

function openExcel(e){
    let File = document.getElementById('fileField').files[0];
    let excelIo = new GC.Spread.Excel.IO();
    excelIo.open(File, (json) => {
        spreadA.suspendPaint();
        spreadA.fromJSON(json);
        spreadA.resumePaint();
        spreadA.removeSheet(0);
    })
}

function addSheetB(e){
    var sheetJson = JSON.stringify(spreadA.getSheet(0).toJSON());

    spreadB.suspendPaint();
    spreadA.getNamedStyles().forEach(function (namedStyle) {
        spreadB.addNamedStyle(namedStyle);
    })
    spreadB.getSheet(0).fromJSON(JSON.parse(sheetJson));
    spreadB.resumePaint();
}



回复 使用道具 举报
tutu
注册会员   /  发表于:2020-12-7 09:03:00
6#
好的已经解决,谢谢
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-12-7 09:38:46
7#
您客气了,那本帖就先结贴了,有问题欢迎另开新帖。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部