找回密码
 立即注册

QQ登录

只需一步,快速开始

lynn8588

金牌服务用户

40

主题

161

帖子

413

积分

金牌服务用户

积分
413
lynn8588
金牌服务用户   /  发表于:2022-12-30 11:57  /   查看:2439  /  回复:18
本帖最后由 Ellia.Duan 于 2023-1-13 10:18 编辑

请教一下,我们有这样一个需求,从外部或者内部粘贴数据时,只需要粘贴值,按照使用的规则,就设置了属性:workbook.options.allowCopyPasteExcelStyle = false;

因为我们以前还有一个复制粘贴图片的功能,发现这个设置会导致图片没办法粘贴到spreadjs 的sheet内,请问这个有方法可以兼容一下么?

18 个回复

正序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-1-16 14:37:47
19#
lynn8588 发表于 2023-1-16 12:26
好的,谢谢,我试一下

嗯嗯,有问题随时沟通。
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-1-16 12:26:16
18#
好的,谢谢,我试一下
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-1-16 09:37:46
17#
lynn8588 发表于 2023-1-14 19:54
非常感谢,您的demo我试过了,是可以在不影响粘贴值的情况下,粘贴图片,但是粘贴图片的位置还有点问题,如 ...

造成此问题的原因是cellReact的用法,对此可以参考这篇文章
https://gcdn.grapecity.com.cn/showtopic-154347-1-28.html
在这篇文章中,提到了添加浮动元素有两种方式定位方式,一种是通过x,y添加,一种是row,col坐标添加。
对于您的需求,可以使用startRow,startCol这两个API来添加图片,代码如下图所示。
  1.    var spread = GC.Spread.Sheets.findControl("ss");
  2.                         var sheet = spread.getActiveSheet();
  3.                         let imgName = "image" +  new Date().valueOf();
  4.                         sheet.shapes.addPictureShape(imgName, img.src, 0, 0, img.width, img.height);
  5.                         var pic = sheet.shapes.get(imgName);
  6.                         pic.startRow(sheet.getActiveRowIndex());
  7.                         pic.startColumn(sheet.getActiveColumnIndex());
复制代码

image.png618538207.png
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-1-14 19:54:31
16#
非常感谢,您的demo我试过了,是可以在不影响粘贴值的情况下,粘贴图片,但是粘贴图片的位置还有点问题,如您的demo页面,在sheet上面部分粘贴,如30行以内,图片可以定位到正确的选中的单元格,但是如果在100多行选中一个单元格进行粘贴,图片并没有在选中的单元格附近,在demo页面中可以重现
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-1-12 17:14:09
15#
Ellia.Duan 发表于 2023-1-6 18:22
明白您的需求了,这边需要深入调研下,需要一定时间 ,有结果了及时回复您。【SJS-16557】

经调研,这边写了一个demo ,您可以下载试一下。

demo.html

2.27 KB, 下载次数: 103

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-1-6 18:22:34
14#
本帖最后由 Ellia.Duan 于 2023-1-9 13:41 编辑
lynn8588 发表于 2023-1-6 16:58
我这里说的要保留的样式是保留我现有spread里单元格的样式,复制值是指,我copy外部excel单元格内容的时候 ...

明白您的需求了,这边需要深入调研下,需要一定时间 ,有结果了及时回复您。【SJS-16557】
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-1-6 16:58:55
13#
我这里说的要保留的样式是保留我现有spread里单元格的样式,复制值是指,我copy外部excel单元格内容的时候,只要值,不要excel单元格上的样式
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-1-6 16:31:05
12#
本帖最后由 Ellia.Duan 于 2023-1-6 16:34 编辑
lynn8588 发表于 2023-1-6 10:06
首先我们的业务需求2点:1,我们需要复制外部图片粘贴到spread插件里面;2.我们需要拷贝外部数据到spread, ...

workbook.options.allowCopyPasteExcelStyle=false 设置后,不会复制单元格底色。
这个您可以再测试下。所以对您说的业务需求还是不太明白,建议您这边用截图方式或者视频方式指出,哪些格式需要保留,哪些需要去除。或者留下您的联系方式,电话沟通下。
因为我们这边设置allowCopyPasteExcelStyle = false 后,是不可复制外部单元格的样式的,但是您又说需要保留,对此我认为是矛盾的。
  1.   spread.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (sender, args) {
  2.             const {pasteData, cellRange, sheet} = args
  3.             if (!pasteData.image) {
  4.                 //根据自己业务处理值
  5.             }

  6.         });
复制代码
对于workbook.options.allowCopyPasteExcelStyle=false后,不能复制图片,这个属于by designer ,这个设计也希望您理解,只复制值必然不能复制图片。所以您如果有相关业务需求,建议不要设置allowCopyPasteExcelStyle,而是在ClipboardPasted事件中,根据您的需求处理数据。
回复 使用道具 举报
lynn8588
金牌服务用户   /  发表于:2023-1-6 10:06:35
11#
首先我们的业务需求2点:1,我们需要复制外部图片粘贴到spread插件里面;2.我们需要拷贝外部数据到spread,但仅拷贝数字;
在开发的时候,第一点我们已经实现了,没有设置这个属性workbook.options.allowCopyPasteExcelStyle,然后第二个需求来了以后,做粘贴的时候发现只有设置了workbook.options.allowCopyPasteExcelStyle=false才能做到只拷贝数字,但是又因为这个引发了第一点不对;
我们之所以只拷贝数字,因为在我们的文件模板上,用户已经设置了这个单元格的底色,数据格式,这个是不能改变的,更不能清除的
您看我这样说清楚了没?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部