找回密码
 立即注册

QQ登录

只需一步,快速开始

lin123

最新发帖
lin123
中级会员   /  发表于:2018-3-23 10:37:26
21#
ClarkPan 发表于 2018-3-23 09:42
您用的是哪个版本的SpreadJS,我在V11版本中试了,没有问题啊,这个是我通过debug调试出来取值的结果,这样 ...

现在已实现:
1、复制单元格直接黏贴,出现D4这样,(不想要这样的结果,应该只留下数字)

2、复制单元格,点击进入编辑,在黏贴,出现D5这样,(这个是对的)

3、监听黏贴事件怎么改黏贴的值?(这个是重点,解决了应该就能实现最初想要的结果了)

1.png
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-23 18:04:20
22#
更改黏贴的值,这个做不到的,因为剪切板的数据是无法变动的。只能取出来比对,但是无法进行修改
回复 使用道具 举报
lin123
中级会员   /  发表于:2018-3-23 18:25:37
23#
ClarkPan 发表于 2018-3-23 18:04
更改黏贴的值,这个做不到的,因为剪切板的数据是无法变动的。只能取出来比对,但是无法进行修改

好吧,那有没有办法在ClipboardPasting监听里面获取到黏贴单元格的cellType,
var cellRange = args.cellRange;
   var col = cellRange.col;
直接写取到的是空值,
在里面怎么获取单元格类型?这样我就可以比较他是不是我那个NumberCellType,然后就可以处理判断了

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-23 18:56:41
24#
参考:
我这边测试是可以的啊,参考demo
然后您可以获取到范围了,然后遍历其中的单元格通过getCellType方法可以获取到单元格类型,进行判断,至于依据什么样的逻辑进行判断那由您通过代码来决定。

getRange.html

1.33 KB, 下载次数: 184

回复 使用道具 举报
lin123
中级会员   /  发表于:2018-3-26 11:21:37
25#
本帖最后由 lin123 于 2018-3-26 16:11 编辑
ClarkPan 发表于 2018-3-23 18:56
参考:
我这边测试是可以的啊,参考demo
然后您可以获取到范围了,然后遍历其中的单元格通过getCellType方 ...

在黏贴的时候,键盘CTRL+v黏贴获取到text的值,而右键选择黏贴,获得的text确是空值?这是什么情况?

sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (sender, args) {
console.log("ClipboardPasted"+args.pasteData+"\n text="+args.pasteData.text);
});
sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (sender, args) {
console.log("ClipboardPasting"+args.pasteData+"\n text="+args.pasteData.text);
  });



1.png
回复 使用道具 举报
lin123
中级会员   /  发表于:2018-3-26 17:26:08
26#
本帖最后由 lin123 于 2018-3-26 17:31 编辑
ClarkPan 发表于 2018-3-23 18:56
参考:
我这边测试是可以的啊,参考demo
然后您可以获取到范围了,然后遍历其中的单元格通过getCellType方 ...

打印出args的属性后,发现右键没得到text的值
sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (sender, args) {
      console.log("ClipboardPasting"+args.pasteData+"\n text="+JSON.stringify(args));
  });

整体的图

整体的图

放大后的,第一个有数值,第二个没有

放大后的,第一个有数值,第二个没有

第二个右键黏贴

第二个右键黏贴
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-26 18:13:47
27#
因为spreadjs又两套复制粘贴,分别对应内部和外部的复制,ctrl+c ctrl+v走的是外部复制逻辑(当然外部复制也可以复制spreadjs内部之间的内容),菜单的复制粘贴走的是内部复制粘贴的逻辑。这块我需要调研一下,明天给您回复。
回复 使用道具 举报
lin123
中级会员   /  发表于:2018-3-26 18:18:43
28#
ClarkPan 发表于 2018-3-26 18:13
因为spreadjs又两套复制粘贴,分别对应内部和外部的复制,ctrl+c ctrl+v走的是外部复制逻辑(当然外部复制也 ...

好的,麻烦你了
回复 使用道具 举报
lin123
中级会员   /  发表于:2018-3-27 11:38:04
29#
ClarkPan 发表于 2018-3-26 18:13
因为spreadjs又两套复制粘贴,分别对应内部和外部的复制,ctrl+c ctrl+v走的是外部复制逻辑(当然外部复制也 ...

版主,情况怎么样啦
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-27 12:12:56
30#
您好:

调查结果是这样的,内部拷贝走的是内部逻辑没有调用剪切板所以会拿到空值。这里有一点不太好的地方是我们在ClipboardPasting事件中拿不到fromRange,从而拿不到被拷贝的信息。这个应该属于需求,我已经向相关部门进行反馈了。
目前解决方法是,不用ClipboardPasting事件,监听RangeChanged事件,在事件中可以拿到粘贴的范围,从而通过getRange遍历获取其中的信息进行判断。并且RangeChanged中的action可以获得这个事件触发的原因,其中判断是粘贴在触发相关逻辑。
RangeChanged相关参考:
http://help.grapecity.com/spread ... angeChanged_EV.html
其中action的枚举请参考:
http://help.grapecity.com/spread ... eChangedAction.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部