找回密码
 立即注册

QQ登录

只需一步,快速开始

肥夏米
初级会员   /  发表于:2021-10-22 19:05  /   查看:3161  /  回复:12
我们的combobox默认保存的是value, 显示的是text,下拉列表的数据是动态从后端获取赋上去的。
现在用户想要线下excel收集数据,然后把数据复制贴过去,贴过去之后就自动转成value了。
比如:在excel里是图一
企业微信截图_16349004659397.png765461120.png
复制到spreadjs中是图二红线框出来的部分:
企业微信截图_1634900539555.png728964538.png
就是它AB两列本来是combobox,并且A列的列表数据是固定的,B列是根据A列的选择动态请求后端接口获取的。如果想要把excel中的值直接复制过来的话,首先这个combobox的格式会变掉,不再是combobox,再一个,它的值会自动匹配成value的值。
像这种有combobox的情况,我们有什么办法能支持从excel中把数据复制粘贴到我们的spreadjs模板里来,而不改变它的单元格类型和数据吗?


12 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-10-26 17:27:32
推荐
肥夏米 发表于 2021-10-26 14:16
你看看我们的数据是这样的:
第一列费用大类是固定的combobox,下拉列表数据是从后端返回的数据。但是第二 ...

区分内部复制粘贴和外部复制粘贴有这样的规则,只能从用户操作的行为上进行区分。
如果用SpreadJS右键菜单进行复制粘贴,一定是内部复制
外部复制粘贴只会走Ctrl+C Ctrl+V
但内部复制也可能是Ctrl+C Ctrl+V,需要注意。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-10-25 09:32:33
沙发
设置了spread.options.allowCopyPasteExcelStyle = false;
之后再去Excel中进行复制粘贴,这样做不会粘贴样式相关的属性,这样也就不会破坏原来单元格的celltype或者格式。
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2021-10-25 10:08:00
板凳
Clark.Pan 发表于 2021-10-25 09:32
设置了spread.options.allowCopyPasteExcelStyle = false;
之后再去Excel中进行复制粘贴,这样做不会粘贴 ...

没有生效呢,复制过去之后,首先是text自动转成value了,另外,combobox的下拉图标也没有了,变成了普通文本框
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-10-25 10:47:17
地板
您看一下我附件传的gif图片,为了方便演示我选择了用在线表格编辑器快速设计了一个combobox,这里跟代码设计没有什么不同。
test.gif
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2021-10-26 14:16:04
5#
你看看我们的数据是这样的: 企业微信截图_16352287534791.png365962523.png
第一列费用大类是固定的combobox,下拉列表数据是从后端返回的数据。但是第二列费用科目是跟第一列做了级联的,当第一列数据变更时,第二列才会变成combobox,并从接口请求下拉列表的数据。
现在业务要求可以从excel把数据做整行复制。用了你说的那个属性之后呢,第一列没问题,第二列我们去循环根据text找到对应的value,也可以赋值进去。
但是如果要从spreadjs里面自己做整行复制的话,就不行了。就是怎么区分是从excel里复制来的和从spreadjs里复制来的呢。。
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2021-10-26 14:18:40
6#
肥夏米 发表于 2021-10-26 14:16
你看看我们的数据是这样的:
第一列费用大类是固定的combobox,下拉列表数据是从后端返回的数据。但是第二 ...

关于这个我们找了个折中的方案。如果复制出来第二列的值是数字型的,我们就认为是从spreadjs中复制的,因为我们的value都是数字。如果不是数字,我们就认为是从excel复制来的,就根据text去匹配到相应的value.。暂时只能这么做。如果你们有更好的方案的话,也希望可以提供一下。谢谢了
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2021-10-26 17:51:33
8#
Clark.Pan 发表于 2021-10-26 17:27
区分内部复制粘贴和外部复制粘贴有这样的规则,只能从用户操作的行为上进行区分。
如果用SpreadJS右键菜 ...

又碰到一个问题。。。
就是内部的复制,如果我把普通文本单元格的内容复制到combobox里的时候就会出现combobox的单元格也变成普通的文本单元格,然后内容也复制过去了。。这个要怎么控制呢?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-10-26 17:53:26
9#
内部复制你可以进行区分只粘贴值
sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;
回复 使用道具 举报
肥夏米
初级会员   /  发表于:2021-10-26 18:09:32
10#
Clark.Pan 发表于 2021-10-26 17:53
内部复制你可以进行区分只粘贴值
sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOpti ...

这个是针对整个sheet来做配置的吗?可以针对单元格吗?或者是区域来做配置吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部