找回密码
 立即注册

QQ登录

只需一步,快速开始

dept_estate_dev

初级会员

35

主题

115

帖子

326

积分

初级会员

积分
326
dept_estate_dev
初级会员   /  发表于:2017-10-31 20:33  /   查看:3826  /  回复:8
流程如下1.用spreadjs 设计器,编辑模板,设置单元格级别绑定
2.导入json文件,设置数据源,展示数据
3.导出为excel,并编辑数据
4.导入编辑后的excel

在第4步的时候,单元格级别绑定已经消失,能否恢复这部分绑定的内容,拿到编辑后的数据源?

8 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-11-1 09:12:59
推荐
您好:

       在导出Excel生成json对象时需要在spread.toJSON方法中增加 includeBindingSource: true 参数,才能将绑定的数据源导出,相关文档您可以参考:
http://demo.gcpowertools.com.cn/ ... dataSourceSerialize
回复 使用道具 举报
dept_estate_dev
初级会员   /  发表于:2017-11-1 11:05:07
板凳
你的回答不是这个问题,这个序列化。我要的是反序列化,从excel导入的时候,拿到数据源。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-11-1 14:22:45
地板
您好:

是这样的,原因是Excel中并不支持数据源的绑定,所以导入进去的时候绑定的相关就丢失了,在通过Excel到回来肯定就没有绑定的相关信息了。
绑定单元格的意义在于在线填报这一块,用户直接在spreadjs上面填报,然后后台通过getDataSource直接拿到数据源保存数据源信息。
如果按照您的想法,只能这样做:
首先创建带绑定数据的模板A 将A导出成Excel 在Excel中编辑,导入到另一个spread中成为B,再遍历将B的值通过getValue和setValue的形式同步到A上,这时的A是带有绑定数据的。不过这样做我觉得是绕远路了,咱们可以聊聊您想要实现的功能是什么,我们可以探讨一下看有没有更好的实现方式。
回复 使用道具 举报
dept_estate_dev
初级会员   /  发表于:2017-11-1 17:18:49
5#
功能上很简单,就是离线编辑。使用Excel作为离线编辑,编辑后的表格再导入。
你说的模板A和B,对应其实是同样的内容。
如果单元格绑定能够从和 spread 解耦,我就可以使两个A和B模板,数据源绑定是一模一样的,从而实现该功能。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-11-1 18:28:58
6#
您好:
      是这样的从控件角度来看您的需求是没办法加入控件中的,这么说B模板中如果有与A模板出入的部分,是该用A呢还是用B。您这边肯定是用B,这没问题,但是控件是面向不同的用户,很可能有的用户在他的场景下觉得用A,有的觉得用B。所以这部分您完全可以自己来实现,思路如下,在您导出的时候A模板的信息您是可以完全获得的,您可以将其中绑定相关的按照自己的需求组织一个数据结构(对象啊,json啊都可以),然后保存起来。之后在您导入B模板后将先关绑定信息加载进来就可以了
回复 使用道具 举报
favori讲师达人认证
金牌服务用户   /  发表于:2020-5-21 14:50:58
7#
我也遇到这个离线填报的问题,您说的那个解决方案中有个问题,
image.png239281920.png
数据关联的位置信息拿什么做key, 如果拿坐标做key, 那么用户在excel离线填报时新增了行或列,那坐标做key就错位了

QQ20200521-144305.png
image.png749085998.png
回复 使用道具 举报
favori讲师达人认证
金牌服务用户   /  发表于:2020-5-21 14:53:39
8#
ClarkPan 发表于 2017-11-1 18:28
您好:
      是这样的从控件角度来看您的需求是没办法加入控件中的,这么说B模板中如果有与A模板出入的部 ...

我也遇到这个离线填报的问题,您说的那个解决方案中有个问题,
image.png506299132.png
数据关联的位置信息拿什么做key, 如果拿坐标做key, 那么用户在excel离线填报时新增了行或列,那坐标做key就错位了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-21 20:09:11
9#
favori 发表于 2020-5-21 14:53
我也遇到这个离线填报的问题,您说的那个解决方案中有个问题,

数据关联的位置信息拿什么做key, 如果 ...

那为什么SpreadJS可以实现数据绑定呢?换而言之,Excel不支持数据填报,您可以参考SpreadJS的绑定方式来实现一个绑定,再说到错位问题,SpreadJS可以将坐标定位跟单元格的相对位置固定,换而言之,增行或者增列的同时绑定关系会跟着发生变化,毕竟SpreadJS是编程语言控制的。所以这里要考虑的是Excel上有什么办法能够做到这样的效果。如果Excel做不到,那就是您需要在您的业务逻辑中进行约束了。再说即使不用绑定,您这样的需求还是会遇到类似的问题,那么您是否考虑该如何解决呢?

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部