找回密码
 立即注册

QQ登录

只需一步,快速开始

CinYung

注册会员

18

主题

57

帖子

155

积分

注册会员

积分
155
CinYung
注册会员   /  发表于:2019-10-16 15:23  /   查看:2958  /  回复:6
实际问题:点击按钮,复制、剪切、粘贴数据想到了使用commandManager来实现,
$('#copy').click(function () {
    spread.commandManager().execute({cmd:"copy",sheetName:sheet.name()});
});
$("#paste").click(function(){
    spread.commandManager().execute({cmd:"paste",sheetName:sheet.name()});
});

发现,这样复制的数据,粘贴到spreadjs中没有问题,但是在粘贴到excel或者txt等地方时,无效了。
我有在ClipboardChanged中打印copyData.text,可以看到有复制数据进入剪切板。
为什么在其他地方粘贴不成功?

copyPaste.rar (430.91 KB, 下载次数: 70)

6 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-10-16 16:43:40
沙发
您好,这涉及到javascript语言的权限问题。

要把SpreadJS的数据复制到外部的txt或Excel文档中,必须通过操作系统的剪贴板。

而JavaScript是无法直接跨过浏览器,直接调用系统的任何接口的,

换句话说,除了Ctrl+C / V 的方式,其它任何通过代码的方式都只能走SpreadJS内部的剪贴板,

因此没办法实现粘贴到外部文档中。
回复 使用道具 举报
CinYung
注册会员   /  发表于:2019-10-16 19:27:06
板凳
KevinChen 发表于 2019-10-16 16:43
您好,这涉及到javascript语言的权限问题。

要把SpreadJS的数据复制到外部的txt或Excel文档中,必须通过 ...

那请问,我能不能操作进入spreadJS内部剪切板的数据,例如某些行被我隐藏了,我不想复制这部分数据进去剪切板。
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2019-10-17 11:26:21
地板
可以先获取选中区域:
https://demo.grapecity.com.cn/sp ... ~getSelections.html

然后根据选择区域的行号、列号判断当中是否包含隐藏的 行或列:
https://demo.grapecity.com.cn/sp ... tColumnVisible.html

通过监听 复制、粘贴事件,进行相应操作,比如 当选择区域中包含隐藏列则取消复制,给出相应提示:
https://demo.grapecity.com.cn/sp ... ardChanging_EV.html
https://demo.grapecity.com.cn/sp ... boardPasted_EV.html
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
CinYung
注册会员   /  发表于:2019-10-18 10:26:50
5#
Fiooona 发表于 2019-10-17 11:26
可以先获取选中区域:
https://demo.grapecity.com.cn/spreadjs/help/v12/content/webframe.html#SpreadJS ...

clipboardChanging中,只有args.cancel是接受输入的,无法修改这里面的copyData的。而且我前面的操作是,用一个按钮来复制,一个按钮来粘贴。所以无法操作系统的剪切板,那就是我要自己写一个剪切板来实现?
回复 使用道具 举报
CinYung
注册会员   /  发表于:2019-10-18 10:57:41
6#
本帖最后由 CinYung 于 2019-10-18 12:15 编辑
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-10-18 17:23:05
7#
您好,SpreadJS这里是沿用了Excel的设计,不会把隐藏行、列的数据剔除出来,

推荐给您一个思路,用clipboardPaste命令:

https://demo.grapecity.com.cn/sp ... clipboardPaste.html

这个命令可以把对应区域的数据直接拷贝到指定的目标区域,

在执行这个命令前,您应该可以拿到用户选中的区域,

您先判断出这个区域中有哪些行、列被隐藏了,

然后把非隐藏的区域向目标区域执行拷贝即可。

例如,您隐藏了表单的第三行,那么当用户选中2~4行数据时,

您可以根据第三行的隐藏状态,判断出不需要复制第三行,

然后分别把第2、4行复制到对应区域即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部