找回密码
 立即注册

QQ登录

只需一步,快速开始

macro

注册会员

12

主题

18

帖子

90

积分

注册会员

积分
90
macro
注册会员   /  发表于:2018-12-29 14:18  /   查看:3404  /  回复:3
本帖最后由 macro 于 2019-1-2 12:18 编辑

Q:如果打印多个sheet,但不是所有sheet。例如:spread中有四个sheet,如何打印其中的两个?
A:这样需要将spread复制到一个临时spread中,在临时spread中删除不打印的sheet,然后打印临时spread。

1.有个表格的展示页面,我的表格有6个sheet页面,默认展示下标为0的sheet页
2.按照这个方法,我克隆一个spread对象:
  1. var spreadTemp = jQuery.extend(true, {}, spread);
复制代码
3.spreadTemp 删除不需要打印的sheet页面下标 0,1
4.spreadTemp 执行打印
问题:
   打印是没有问题的,但是我的展示页面变成了下标为2的页面,临时对象的删除操作影响到了原来的对象的页面,我需要刷新页面才能恢复.

3 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-2 09:51:25
沙发
您好,对Spread进行复制,推荐使用toJSON和fromJSON来实现,

并且在toJSON后最好调用一句JSON.stringify()来生成一个json字符串,

以避免某些浏览器在一些情况下会导致没能正确克隆的问题。

示例代码:

  1. var spread = GC.Spread.Sheets.findControl("ss");
  2. var json = spread.toJSON();
  3. var jsonStr = JSON.stringify(json);
  4. var newSpread = new GC.Spread.Sheets.Workbook();
  5. newSpread.fromJSON(JSON.parse(jsonStr));
复制代码
回复 使用道具 举报
macro
注册会员   /  发表于:2019-1-2 12:17:41
板凳
KevinChen 发表于 2019-1-2 09:51
您好,对Spread进行复制,推荐使用toJSON和fromJSON来实现,

并且在toJSON后最好调用一句JSON.stringify ...

感谢版主,已解决!
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-2 14:04:03
地板
不客气,很高兴解决了您的问题,本帖我结贴了,有新的问题欢迎发新贴交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部