请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

xiaolong

金牌服务用户

97

主题

378

帖子

1033

积分

金牌服务用户

积分
1033
xiaolong
金牌服务用户   /  发表于:2018-12-10 16:57  /   查看:4036  /  回复:9
自带的粘贴选项, image.png249886473.png 。这几个完全没生效,应该怎么做让它生效

9 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-10 17:42:06
沙发
您好,这几个粘贴选项,只有当复制的源数据来自于同一个Spread实例时才有效。

这是由于SpreadJS是纯前端控件,JavaScript由于安全权限的限制,无法直接访问系统的剪贴板,

内部的复制粘贴走的是Spread的剪贴板,而Ctrl C调用的是系统剪贴板,内部机制是有差别的。
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2018-12-10 20:03:12
板凳
KevinChen 发表于 2018-12-10 17:42
您好,这几个粘贴选项,只有当复制的源数据来自于同一个Spread实例时才有效。

这是由于SpreadJS是纯前端 ...

那应该怎么实现复制excel数据的时候只复制值到网页上呢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-11 09:14:54
地板
xiaolong 发表于 2018-12-10 20:03
那应该怎么实现复制excel数据的时候只复制值到网页上呢

这个很简单,您可以设置工作表的粘贴选项为只粘贴值,参考代码:

  1. activeSheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.Values;
复制代码


参考API:

http://help.grapecity.com/spread ... rdPasteOptions.html

http://help.grapecity.com/spread ... html#clipboard.html
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2018-12-11 10:25:26
5#
KevinChen 发表于 2018-12-11 09:14
这个很简单,您可以设置工作表的粘贴选项为只粘贴值,参考代码:

按上图所示,如果我把下面的选项全部去掉,然后粘贴选项只留粘贴两个字。点击它的时候只执行粘贴值的操作,可以实现吗
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-11 12:05:21
6#
xiaolong 发表于 2018-12-11 10:25
按上图所示,如果我把下面的选项全部去掉,然后粘贴选项只留粘贴两个字。点击它的时候只执行粘贴值的操作 ...

可以啊,您只需要把Demo中的updatePasteGroup方法中自定义的“粘贴”中command属性改为pasteValues就可以了。代码如下:

  1. /*
  2.                          *  将粘贴组改为单个命令项,只保留“粘贴值”功能,
  3.                          *  并且将此功能改名为“粘贴”后放置于右键菜单第一项
  4.                          * */
  5.                         function updatePasteGroup(spread) {

  6.                                 var paste = {
  7.                                         iconClass: "gc-spread-pasteValues",
  8.                                         name: "gc.spread.pasteOptions",
  9.                                         text: "粘贴",
  10.                                         command: "gc.spread.contextMenu.pasteValues",
  11.                                         workArea: "viewportcolHeaderrowHeadercorner"
  12.                                 };

  13.                                 var menuData = spread.contextMenu.menuData;
  14.                                 var newMenuData = [];
  15.                                 menuData.forEach(function(item) {
  16.                                         if(item) {
  17.                                                 if(item.name === "gc.spread.pasteOptions" ||
  18.                                                         item.group === "gc.spread.pasteOptions") {
  19.                                                         return;
  20.                                                 }
  21.                                                 newMenuData.push(item);
  22.                                         }
  23.                                 });
  24.                                 newMenuData.unshift(paste);
  25.                                 spread.contextMenu.menuData = newMenuData;
  26.                         }
复制代码
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2018-12-11 14:40:21
7#
KevinChen 发表于 2018-12-11 12:05
可以啊,您只需要把Demo中的updatePasteGroup方法中自定义的“粘贴”中command属性改为pasteValues就可以 ...

设置了之后ctrl+v可以实现只粘贴值,但是右键的粘贴还是没生效。怎么可以让右键出来的粘贴也生效呢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-11 16:15:01
8#
xiaolong 发表于 2018-12-11 14:40
设置了之后ctrl+v可以实现只粘贴值,但是右键的粘贴还是没生效。怎么可以让右键出来的粘贴也生效呢

您好,ctrl + V 调用的是系统的剪贴板,

此时SpreadJS只需要响应系统剪贴板的调用,并被动获取剪贴板传来的数据即可。

而右键粘贴命令相当于需要SpreadJS主动发起对剪贴板的请求,

但是受限于前端语言JavaScript的安全限制,JS语言是无法主动访问到系统剪贴板的,

这就意味着从外界(包括Excel)复制的数据,不能使用右键粘贴命令来粘贴。

Spread JS内置了剪贴板,此命令只能应用于同一个Spread实例内部的粘贴,

因为内部的复制粘贴走的是内部的剪贴板。
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2018-12-11 17:11:49
9#
KevinChen 发表于 2018-12-11 16:15
您好,ctrl + V 调用的是系统的剪贴板,

此时SpreadJS只需要响应系统剪贴板的调用,并被动获取剪贴板 ...

嗯嗯,好的,知道了
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-11 17:23:12
10#
xiaolong 发表于 2018-12-11 17:11
嗯嗯,好的,知道了

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