本帖最后由 Lynn.Dou 于 2023-5-30 11:35 编辑
背景:
用户希望将某一个table中设置的样式序列化存储,以便于后续在其他table中使用,如何实现呢?
思路:
1、‘
如果是SpreadJS内置的table样式,那其实不存在序列化复用的概念,在需要使用该table样式时,传入对应的参数即可。
如下:
- var tableStyle = GC.Spread.Sheets.Tables.TableThemes.light1;
- var table = sheet.tables.add('table1', 0, 0, 4, 4, tableStyle);
复制代码
2、
如果是通过代码自定义的table样式,那可以在自定义该样式时就将其存储,以便于其他table使用。
- var border = new GC.Spread.Sheets.LineBorder();
- var styleInfo = new GC.Spread.Sheets.Tables.TableStyle('red', 'black', '10px arial', border, border, border, border, border, border);
- var tableStyle = new GC.Spread.Sheets.Tables.TableTheme();
- tableStyle.name('tableStyle1');
- tableStyle.headerRowStyle(styleInfo)
- table.style(tableStyle);
复制代码
3、
如果用户用designer通过UI操作自定义了table样式,那需要参考下文,通过序列化实现。
步骤如下:
首先先获取下table的style,通过toJSON方法进行序列化。
- var table = sheet.tables.all()[0]
- var tableStyleJson = JSON.parse(JSON.stringify(table.style().toJSON()));
复制代码 在新的table中应用该style
- var tableStyle2 = new GC.Spread.Sheets.Tables.TableTheme();
- tableStyle2.fromJSON(tableStyleJson);
- var table2 = sheet2.tables.add('table1', 0, 0, 6, 4, tableStyle2);
复制代码
效果如下图:
附件为完整代码,供参考。
|
|