找回密码
 立即注册

QQ登录

只需一步,快速开始

pyy514692469

注册会员

12

主题

57

帖子

153

积分

注册会员

积分
153

微信认证勋章

pyy514692469
注册会员   /  发表于:2019-4-26 14:33  /   查看:4130  /  回复:9
在合并spread之后打印所有sheet,实际应该有9页有数据,但是打印预览只有3页有数据;附件为问题代码及测试的JSON字符串;

问题代码及测试JSON文件.rar

29.81 KB, 下载次数: 390

9 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-26 18:00:06
沙发
您好,这个问题已经重现,问题会持续调研,后天上午会给您答复。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-26 18:21:02
板凳
本帖标记为“未处理”。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-28 11:12:59
地板
您好,这个问题已经提交给研发,问题编号:272110

问题进展请关注本帖。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-29 11:24:49
5#
您好,问题已经定位,是代码中合并workbook,修改namedStyle的逻辑有问题。

请参考附件中的代码。

四川云检.zip

87.39 KB, 下载次数: 400

回复 使用道具 举报
pyy514692469
注册会员   /  发表于:2019-4-29 16:41:28
6#
$.post(url, { xhId: Ids }, function (data) {
            var temp = new GC.Spread.Sheets.Workbook(document.getElementById("copyExcel"));
            var sheetcount = 0;
            for (var i = 0; i < data.length; i++) {
                temp.fromJSON(JSON.parse(data[i]));
                sheetcount += temp.getSheetCount();
            }

            var spread = new GC.Spread.Sheets.Workbook(document.getElementById("printExcel"), { sheetCount: sheetcount });
            //console.log(spread.getSheetCount());
            var sheetindex = 0;
            for (var i = 0; i < data.length; i++) {
                temp.fromJSON(JSON.parse(data[i]));
                temp.getNamedStyles().forEach(function (namedStyle) {
                    namedStyle.name = "zzs" + sheetindex + namedStyle.name;
                    //console.log(namedStyle);
                    spread.addNamedStyle(namedStyle);
                });
                for (var j = 0; j < temp.getSheetCount(); j++) {
                    var sheet = temp.getSheet(j);
                    //console.log("sheetindex:"+sheetindex);
                    //console.log(sheet.name());
                    //console.log(sheet.name() + sheetindex.toString());                    
                    var sheetJson = JSON.stringify(sheet.toJSON());
                    sheetJson = sheetJson.replace(/\"style\":\"/g, '"style":"zzs' + sheetindex);
                    spread.suspendPaint();                    
                    spread.getSheet(sheetindex).fromJSON(JSON.parse(sheetJson));
                    spread.sheets[sheetindex].name(sheet.name() + sheetindex.toString());
                    spread.resumePaint();
                    sheetindex++;
                }
            }
            $scope.print(spread);
        });
回复 使用道具 举报
pyy514692469
注册会员   /  发表于:2019-4-29 16:44:03
7#
现在我的代码改成了这样,但是在print的时候报错;报错信息见图片
JEAT994L(7YD@6BQ[([LSS9.png
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-30 14:28:02
8#
您好,您代码中对sheet的namedStyle引用还是有点问题,修改如下:

  1. temp.getNamedStyles().forEach(function (namedStyle) {
  2.                 // 这里应该把sheetindex改为i
  3.                 namedStyle.name = "zzs" + i + namedStyle.name;
  4.                 //console.log(namedStyle);
  5.                 spread.addNamedStyle(namedStyle);
  6.             });
  7.             for (var j = 0; j < temp.getSheetCount(); j++) {
  8.                 var sheet = temp.getSheet(j);
  9.                 //console.log("sheetindex:"+sheetindex);
  10.                 //console.log(sheet.name());
  11.                 //console.log(sheet.name() + sheetindex.toString());
  12.                 var sheetJson = JSON.stringify(sheet.toJSON());
  13.                 // 这里把sheetindex改为i
  14.                 sheetJson = sheetJson.replace(/"style":"/g, '"style":"zzs' + i);
  15.                 spread.suspendPaint();
  16.                 spread.getSheet(sheetindex).fromJSON(JSON.parse(sheetJson));
  17.                 spread.sheets[sheetindex].name(sheet.name() + sheetindex.toString());
  18.                 spread.resumePaint();
  19.                 sheetindex++;
  20.             }
复制代码
回复 使用道具 举报
pyy514692469
注册会员   /  发表于:2019-4-30 17:44:41
9#
好的,谢谢你,问题已解决
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-5-5 09:10:45
10#
不客气,很高兴解决了您的问题,有新的问题欢迎发新贴交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部