找回密码
 立即注册

QQ登录

只需一步,快速开始

鸳鸯配2024

金牌服务用户

30

主题

163

帖子

413

积分

金牌服务用户

积分
413
鸳鸯配2024
金牌服务用户   /  发表于:2024-10-15 18:28  /   查看:341  /  回复:10
在单元格内复制图片,无法粘贴。
想复制单个图片或单元格的时候,能够复制及粘贴图片。

复现demo (1).html

10.25 KB, 下载次数: 9

10 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-10-16 09:33:24
沙发
您好!需要跟您确认下,您预想的复制粘贴图片效果是怎样的?是想对单个单元格中内嵌的图片复制粘贴呢,还是复制包含有内嵌图片的单元格整行呢?
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-10-16 10:03:45
板凳
Wilson.Zhang 发表于 2024-10-16 09:33
您好!需要跟您确认下,您预想的复制粘贴图片效果是怎样的?是想对单个单元格中内嵌的图片复制粘贴呢,还是 ...

我粘贴图片至单元格,然后从单元格里面复制图片到另外的单元格
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-16 12:06:20
地板
鸳鸯配2024 发表于 2024-10-16 10:03
我粘贴图片至单元格,然后从单元格里面复制图片到另外的单元格

了解您的业务需求了。对复制粘贴功能不做任何设置即可正常复制粘贴图片并令其置于单元格内部,从视觉效果上表现出嵌入在单元格内部的状态。复制图片后,粘贴位置即光标点击的单元格所在位置,如下动图所示。
单元格图片复制粘贴.gif

如果您有其他关于图片设置的需求,在图片完成粘贴后方能获取到成功粘贴的图片信息,即,需要将ClipboardPasting事件修改为ClipboardPasted事件,具体思路如下:

1. 为Worksheet绑定ClipboardPasted事件。
2. 在粘贴完成后,获取参数args中的objects属性,该属性中包含了已经成功粘贴的图片形状对象。
3. 针对图片形状对象,完成其他业务设置。

如下动图所示,观察浏览器左侧粘贴图片后,浏览器右侧打印出ClipboardPasted事件监听到的图片名称。同时,可以注意到ClipboardPasted事件监听信息中的objects即粘贴成功的图片对象。
粘贴图片事件.gif

您可以先尝试下如上的方案,看看能否解决您的问题、满足您的需求。
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-10-16 13:52:03
5#
Wilson.Zhang 发表于 2024-10-16 12:06
了解您的业务需求了。对复制粘贴功能不做任何设置即可正常复制粘贴图片并令其置于单元格内部,从视觉效果 ...

ClipboardPasting 事件监听不到。能监听到的还是ClipboardPasted 事件,能获取参数 args中的objects属性

但里面好像没有看到base64的参数。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-16 16:11:15
6#
鸳鸯配2024 发表于 2024-10-16 13:52
ClipboardPasting 事件监听不到。能监听到的还是ClipboardPasted 事件,能获取参数 args中的objects属性
...

ClipboardPasting事件在粘贴过程中触发,此时图片还未能成功粘贴,因此,无法获取其base64码。
ClipboardPasted事件监听到成功粘贴的图片对象,其中包含有图片的位置、名称等信息,也包含有base64码。需要先遍历objects属性的每个元素,对其中的元素通过PictureShape:toImageSrc()获取base64码,如下动图所示:

ClipboardPasted事件获取图片src.gif

可以参考如下代码:
  1. sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, function(e, args) {
  2.     console.log('clipboard pasted, args: ', args);
  3.     if (args.objects) {
  4.         var pic = args.objects[0];
  5.         console.log('picture name: ', pic.name());
  6.         //  图片的base64码
  7.         console.log('picture src: ', pic.toImageSrc());
  8.     }
  9. });
复制代码

可以参考官网API文档了解详情:
PictureShape:toImageSrc()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Shapes.PictureShape#toimagesrc


回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-10-16 16:40:37
7#
Wilson.Zhang 发表于 2024-10-16 16:11
ClipboardPasting事件在粘贴过程中触发,此时图片还未能成功粘贴,因此,无法获取其base64码。
Clipboar ...

这个不是粘贴在单元格里面的。刚刚试了下。如果是在单元格里面的话。 pic.toImageSrc() 这个方法是猎取不到的。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-16 17:48:11
8#
鸳鸯配2024 发表于 2024-10-16 16:40
这个不是粘贴在单元格里面的。刚刚试了下。如果是在单元格里面的话。 pic.toImageSrc() 这个方法是猎取不 ...

您看一下6楼动图中的小邮箱图片,它的插入位置恰好在单元格内,复制它再粘贴时ClipboardPasted事件可以监听并通过代码pic.toImageSrc()获取到图片对应的base64码。

再看一下下面的动图,我们按照您之前提供的信息令一张图片缩放至于单元格等高宽,令其看上去嵌在单元格内部,这应该就是您所说的“在单元格里面”的效果吧?!同样,为Worksheet注册了ClipboardPasted事件,在该事件中通过pic.toImageSrc()得到了图片对应的base64码。附上demo,以供参考。

单元格内图片复制粘贴.gif

如果我们的理解存在偏差,需要您详细介绍下您的操作方式,也需要您提供录屏帮忙理解问题现象。

demo.html

17.91 KB, 下载次数: 8

回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-10-17 14:02:52
9#
Wilson.Zhang 发表于 2024-10-16 17:48
您看一下6楼动图中的小邮箱图片,它的插入位置恰好在单元格内,复制它再粘贴时ClipboardPasted事件可以监 ...

你看下我的这个附件,先随便找个图片粘贴进来至单元格,然后再从单元格里面复制图片,粘贴到其它单元格,就不行了。

demo照片复制粘贴.html

20.58 KB, 下载次数: 8

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-17 16:01:36
10#
鸳鸯配2024 发表于 2024-10-17 14:02
你看下我的这个附件,先随便找个图片粘贴进来至单元格,然后再从单元格里面复制图片,粘贴到其它单元格, ...

我们运行了您提供的demo,并阅读了其中的代码,发现您对Workbook绑定了ClipboardPasting事件。理解您想在粘贴事件发生的过程中,从监听到的信息中获取粘贴图片信息、粘贴区域位置信息,以此适配您自定义的图片粘贴逻辑。

正如之前告诉您的,如果仅复制了图片,那么,监听信息中图片信息在args.objects中以数组数据类型存在,而非下图中的args.pasteData.image。
1729151088706.png831173095.png

而且,监听信息中不包含粘贴目标区域cellRange。如下动图所示,观察浏览器右侧控制台的打印信息。
复制粘贴图片.gif

如果复制的是单元格,那么ClipboardPasting事件监听信息中被复制的内容被保存为args.pasteData,且包含粘贴目标区域cellRange。如下动图所示,观察浏览器右侧控制台的打印信息。
复制粘贴单元格.gif

如上即是ClipboardPasting对不同复制粘贴内容的监听信息区别,根据实际情况使用对应的监听信息即可。

对于您的需要,您可以通过args.objects获取复制粘贴图片对象,粘贴时光标会点击单元格,以此单元格为粘贴区域,那么可以通过Worksheet:getActiveRowIndex()和Worksheet:getActiveColumnIndex()获取粘贴区域的起始行列索引。附上demo,以供参考,您可以测验下是否能满足需求。

demo照片复制粘贴.html

5.42 KB, 下载次数: 1

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