找回密码
 立即注册

QQ登录

只需一步,快速开始

chaiwei

注册会员

9

主题

21

帖子

78

积分

注册会员

积分
78
chaiwei
注册会员   /  发表于:2021-11-4 14:00  /   查看:2365  /  回复:5
1金币
由于客户需求,现在需要实现选择性粘贴的“仅粘贴值”以及加减法运算。 image.png992265624.png

目前使用场景都是复制粘贴纯数字,我们是限定在一个内部部门使用,所以可以用统一的浏览器。
想问下有哪些是可以调用spread API来实现,不需要重复造轮子的?
1. 在右键菜单增加选项
2. 使用clipboardAPI获取粘贴板文本
3. 将数字按空格拆分为多行多列
4. 根据用户选择的单元格范围进行匹配,复制一个粘贴多个,复制多个粘贴一个等范围处理,是否跳过不可见单元格等处理
5. 每个单元格获取值,与粘贴的值做运算,设置值

最佳答案

查看完整内容

您好, 首先需要与您确认下需求: 您是想通过在右键菜单增加一个新项(如粘贴2),在新项中执行您期待的复制粘贴效果吗? 您指的复制粘贴期待效果 是通过右键菜单复制粘贴项(即SJS内部复制粘贴),还是 ctrl+c、ctrl+v这种粘贴方式(即浏览器站粘贴)呢? 下面是关于您提到的几个问题的回复:0、仅粘贴值 使用 clipboardPaste 命令,设置 ClipboardPasteOptions 为 values 1、在右键菜单增加选项 请参考下方文章: htt ...

5 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-4 14:00:52
来自 2#
本帖最后由 Lynn.Dou 于 2021-11-4 15:37 编辑

您好,
首先需要与您确认下需求:
您是想通过在右键菜单增加一个新项(如粘贴2),在新项中执行您期待的复制粘贴效果吗?
您指的复制粘贴期待效果 是通过右键菜单复制粘贴项(即SJS内部复制粘贴),还是 ctrl+c、ctrl+v这种粘贴方式(即浏览器站粘贴)呢?

下面是关于您提到的几个问题的回复:0、仅粘贴值
使用 clipboardPaste 命令,设置 ClipboardPasteOptions 为 values
1、在右键菜单增加选项
请参考下方文章:
https://www.grapecity.com.cn/blo ... ht-click-menu-part1

2、获取粘贴板文本
监听 ClipboardChanged 事件,获取剪贴板的文本

3、将数字按空格拆分为多行多列
没太理解您的意思,请详细描述下需求。

4、根据用户选择的单元格范围进行匹配,复制一个粘贴多个,复制多个粘贴一个等范围处理,是否跳过不可见单元格等处理
复制一个粘贴多个:默认行为
复制多个粘贴一个:请具体描述下
跳过不可见单元格:SJS未提供相应接口,目前不支持。
思路:可以监听 ClipboardPasting 事件,在粘贴结束前获取到粘贴文本,通过setValue等方式间接实现粘贴。

5、每个单元格获取值,与粘贴的值做运算,设置值
目前不支持,未提供相关接口。
思路:同样,在粘贴结束前监听ClipboardPasting 事件,获取粘贴区域的值,与粘贴文本计算,使用setValue等方式赋值。



回复 使用道具 举报
chaiwei
注册会员   /  发表于:2021-11-4 16:39:05
3#
Lynn.Dou 发表于 2021-11-4 15:34
您好,
首先需要与您确认下需求:
您是想通过在右键菜单增加一个新项(如粘贴2),在新项中执行您期待的 ...

是右键菜单加个新按钮这种鼠标点击触发的,因为用户只在部分情况下需要这种操作,所以不能改动默认的ctrl+c、ctrl+v。
另外复制是从外部excel软件复制的,据我所知右键菜单目前是获取不到值的,我打算使用这个API:https://developer.mozilla.org/zh-CN/docs/Web/API/Clipboard_API
如果使用ClipboardChanged事件,是否意味着只能提供一个开关,用户先打开开关,然后ctrl+v?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-4 17:33:40
4#
ClipboardChanged事件是用来监听SJS内部剪贴板变化的事件,
即进行SJS内部复制操作时,会触发此事件。
下方您描述的问题这边未能理解,
请结合实际业务情况详细描述下,
只有理解问题后这边才能给出合适的建议。

”如果使用ClipboardChanged事件,是否意味着只能提供一个开关,用户先打开开关,然后ctrl+v?“
回复 使用道具 举报
chaiwei
注册会员   /  发表于:2021-11-4 17:49:16
5#
Lynn.Dou 发表于 2021-11-4 17:33
ClipboardChanged事件是用来监听SJS内部剪贴板变化的事件,
即进行SJS内部复制操作时,会触发此事件。
下 ...

以下是期望实现的功能:
1. 用户从windows下的excel复制 image.png843801879.png
2. 在SJS中右键菜单,选择性粘贴,加/减
image.png29970396.png image.png204718932.png

但是SJS的右键菜单是不能粘贴外部excel复制的内容的,所以需要自己写这部分的逻辑。
image.png183660887.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-4 18:17:53
6#
需求了解, SJS目前没有接口可以直接实现此功能,
有个思路您可以参考测试下:
1、获取系统剪贴板的数据,这部分需要您调研下
2、新增菜单项,菜单项中执行以下代码逻辑:
     获取目标粘贴区域的value,
     与剪贴板数据做计算,并对目标区域单元格赋值。
具体如何新增菜单项,您可以参考前面提供的文章链接。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部