找回密码
 立即注册

QQ登录

只需一步,快速开始

Wilson.Zhang
超级版主   /  发表于:2024-11-8 13:38:17
11#
athenadeveloper 发表于 2024-11-8 10:09
再请教下,为什么spreadJs同一张表不同sheet拷贝没有问题,但是打开2张表,拷贝会有空格呢?

这是因为从Spread A通过ctrl+c复制单元格内容至Spread B时,对Spread B而言,粘贴数据来源于外部,读取操作系统剪贴板中的内容完成粘贴。而在同一个Spread内,复制粘贴时使用了产品内部的剪贴板,其中记录的内容没有多余的空格。差别还是聚焦于操作系统剪贴板和SpreadJS内部剪贴板,可以参考如下博客多了解下:
https://gcdn.grapecity.com.cn/showtopic-203383.html

还有一种方法,复制单元格中的内容,即点击进入单元格全选单元格中的数据,这样操作系统剪贴板也不会添加多余的空格,但是需要在粘贴后对粘贴位置的单元格设置与复制源单元格相同的格式,在您的业务场景中即“会计专用”。
回复 使用道具 举报
athenadeveloper
注册会员   /  发表于:2024-11-8 18:07:33
12#
Wilson.Zhang 发表于 2024-11-8 13:38
这是因为从Spread A通过ctrl+c复制单元格内容至Spread B时,对Spread B而言,粘贴数据来源于外部,读取操 ...

有个小疑问,我使用GC.Spread.Sheets.Events.ClipboardPasted和GC.Spread.Sheets.Events.ClipboardPasting查看pasteData,里面的数据已经带上首尾空格了。

麻烦看下10#的回复,通过打印单元格的formatter(),推断空格是设置会计专用格式加上的。不像是系统剪切板加上的。问题场景打印出来的formatter()是空,拿不到来源格式,所以我无法判断是不是会计专用模式。
this.spread.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (sender, args) {
      console.log('After pasting:', args);
      const {
        cellRange: { col, row },
        sheet,
      } = args;
      console.log('getStyle', sheet.getStyle(row, col));
    });
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-11 11:14:19
13#
athenadeveloper 发表于 2024-11-8 18:07
有个小疑问,我使用GC.Spread.Sheets.Events.ClipboardPasted和GC.Spread.Sheets.Events.ClipboardPastin ...

您对单元格设置了会计专用格式,这个格式主要用户处理货币数值或需要进行精确数值计算的表示的数据,要求输入单元格中的数据为数值,以便进行各种数学运算和符合会计规范的显示,对数值进行格式化处理,比如添加货币符号等。但是,您发现问题时使用的A001对会计专用格式而言并非合理的数据。我是用数值数据测试,如下动图所示,使用ctrl+c/ctrl+v跨Workbook复制粘贴也未添加多余空格。
会计专用格式.gif

请问下您的业务场景中需要使用类似A001这样的非数值数据吗?还是您只是使用这样的数据测试呢?需要注意的是会计专用格式对这样的数据不生效,无法处理,应该使用常规格式或文本格式处理这样的文本内容。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部