找回密码
 立即注册

QQ登录

只需一步,快速开始

Lynn.Dou 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-30 11:29  /   查看:715  /  回复:0
本帖最后由 Lynn.Dou 于 2023-5-30 11:35 编辑

背景:
用户希望将某一个table中设置的样式序列化存储,以便于后续在其他table中使用,如何实现呢?

思路:
1、‘
如果是SpreadJS内置的table样式,那其实不存在序列化复用的概念,在需要使用该table样式时,传入对应的参数即可。
如下:
  1. var tableStyle = GC.Spread.Sheets.Tables.TableThemes.light1;
  2.     var table = sheet.tables.add('table1', 0, 0, 4, 4, tableStyle);
复制代码

2、
如果是通过代码自定义的table样式,那可以在自定义该样式时就将其存储,以便于其他table使用。
  1. var border = new GC.Spread.Sheets.LineBorder();
  2.     var styleInfo = new GC.Spread.Sheets.Tables.TableStyle('red', 'black', '10px arial', border, border, border, border, border, border);
  3.     var tableStyle = new GC.Spread.Sheets.Tables.TableTheme();
  4.     tableStyle.name('tableStyle1');
  5.     tableStyle.headerRowStyle(styleInfo)
  6.     table.style(tableStyle);
复制代码

3、
如果用户用designer通过UI操作自定义了table样式,那需要参考下文,通过序列化实现。
步骤如下:

首先先获取下table的style,通过toJSON方法进行序列化。
  1. var table = sheet.tables.all()[0]
  2.             var tableStyleJson = JSON.parse(JSON.stringify(table.style().toJSON()));
复制代码
在新的table中应用该style
  1. var tableStyle2 = new GC.Spread.Sheets.Tables.TableTheme();
  2.             tableStyle2.fromJSON(tableStyleJson);
  3.             var table2 = sheet2.tables.add('table1', 0, 0, 6, 4, tableStyle2);
复制代码

效果如下图:
image.png221426390.png
附件为完整代码,供参考。

tableStyle.zip

1.92 KB, 下载次数: 12

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部