找回密码
 立即注册

QQ登录

只需一步,快速开始

gavinchan

注册会员

21

主题

53

帖子

168

积分

注册会员

积分
168

微信认证勋章

gavinchan
注册会员   /  发表于:2019-2-15 19:59  /   查看:3344  /  回复:9
背景:我想通过导出excel,保存内容、样式、绑定关系、数据源等信息并持久化
在使用时,我取出持久化的数据,调用fromJSON函数加载到所有内容

为此做了一个测试第一步,导出时我带上了绑定源 includeBindingSource : true
第二步,导入时我想获取到dataSource,发现dataSource为null

核心代码如下:
  1. document.getElementById("importDatasource").addEventListener('click', function() {

  2.      // 测试带datasource导出
  3.     var json = spread.toJSON({
  4.         includeBindingSource : true
  5.     });

  6.     var sheet = spread.getActiveSheet();

  7.     console.log(sheet.getDataSource());
  8.     console.log(sheet.getBindingPath());

  9.     // 测试导入后,是否有datasource
  10.     spread.fromJSON(json);
  11.     sheet = spread.getActiveSheet();
  12.     console.log(sheet.getDataSource());
  13.             });
复制代码


请问,通过fromJSON导入数据时,dataSource就丢失了吗

tableBinding.html.zip

4.04 KB, 下载次数: 103

9 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 10:02:01
沙发
您好,dataSource确实无法导出到Excel或Ssjson中,includeBindingSource 设置为true时,

只是将表格中绑定了dataSource的数据导出,而不包含绑定关系。

所以您再次fromJSON后,需要组织dataSource实例,再次执行绑定。
回复 使用道具 举报
gavinchan
注册会员   /  发表于:2019-2-18 10:53:02
板凳
本帖最后由 gavinchan 于 2019-2-18 11:07 编辑
KevinChen 发表于 2019-2-18 10:02
您好,dataSource确实无法导出到Excel或Ssjson中,includeBindingSource 设置为true时,

只是将表格中绑 ...

有没有详细的文档说明,fromJSON后,有哪些类似getDataSource的方法是无法获取到内容的呢?
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 11:47:51
地板
您好,实际上SpreadJS原生的特性,包括图表、富文本、单元格格式、单元格类型等等,

导出到SSJSON中后,都是可以再通过fromJSON反序列化到页面上的。

dataSource比较特殊,从设计上来说就没有考虑在保存页面数据的同时再保留一份数据源,

在fromJSON初始化完成后,您也可以通过getArray方法来轻松打包一个新的dataSource实例,

关于getArray的用法,请参考:

https://demo.grapecity.com.cn/Sp ... /#/demos/getSetData
回复 使用道具 举报
gavinchan
注册会员   /  发表于:2019-2-18 16:04:35
5#
KevinChen 发表于 2019-2-18 11:47
您好,实际上SpreadJS原生的特性,包括图表、富文本、单元格格式、单元格类型等等,

导出到SSJSON中后, ...

感谢提供一个方便的办法拼装数据,这个方案比较适合获取table绑定的datasource,那cell绑定的datasource是不是只能通过getCell方式去获取?
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 17:13:29
6#
您好,如果是cell绑定,可以调用getBindingPath来获取单元格的绑定路径,希望能帮助到您,

参考API:

http://help.grapecity.com/spread ... getBindingPath.html
回复 使用道具 举报
gavinchan
注册会员   /  发表于:2019-2-18 17:38:18
7#
本帖最后由 gavinchan 于 2019-2-18 17:48 编辑
KevinChen 发表于 2019-2-18 17:13
您好,如果是cell绑定,可以调用getBindingPath来获取单元格的绑定路径,希望能帮助到您,

参考API:

设置时是使用table.bindColumns([tableColumn1, tableColumn2, tableColumn3]);

请问fromJSON后,
如何获取到table的之前被绑定的column数组呢?  
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 18:19:49
8#
您好,table类型提供了几个方法,可以用来获取列的绑定信息,如图所示:

image.png463034972.png

图中调用的getColumnDataField和getColumnName方法都是table的API,

ssjson文件我上传到附件中,您可以对应参考。

另外,table的API地址如下,供您参考:

http://help.grapecity.com/spread/SpreadSheets12/webframe.html#SpreadJS~GC.Spread.Sheets.Tables.Table.html

test.ssjson

6.56 KB, 下载次数: 76

回复 使用道具 举报
gavinchan
注册会员   /  发表于:2019-2-19 11:25:57
9#
KevinChen 发表于 2019-2-18 18:19
您好,table类型提供了几个方法,可以用来获取列的绑定信息,如图所示:

OK,多谢答复
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-19 12:07:49
10#
您客气了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部