找回密码
 立即注册

QQ登录

只需一步,快速开始

sssssss

金牌服务用户

134

主题

344

帖子

1184

积分

金牌服务用户

积分
1184
sssssss
金牌服务用户   /  发表于:2023-2-27 10:39  /   查看:1114  /  回复:5
1金币


当用户从excel中粘贴string类型的数字到另一个excel中,则依旧展示string,
但用户从excel中粘贴string类型的数字到框架中,框架会自动转换成number类型,此问题会影响用户使用vlookup等有数据格式校验的函数,辛苦解决下

最佳答案

查看完整内容

这个目前没有办法解决。 从excel中粘贴string类型的数字到另一个excel中,这个仍属于excel内部的复制粘贴。excel可也拿到这个数据的类型是string。所以粘贴过去仍然是string spreadjs是一个浏览器组件,所以外部复制粘贴(Ctrl+C,Ctrl+V)只能依赖于剪切板,从剪切板中能拿到的目前只是一个数字字符串。没有办法拿到其他的信息。所以对于数字字符串会都转换为数字。基于同样的原因,单元格的格式也是没有办法复制粘贴的 ...

5 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-27 10:39:50
来自 2#
本帖最后由 Richard.Ma 于 2023-2-27 11:38 编辑

这个目前没有办法解决。

从excel中粘贴string类型的数字到另一个excel中,这个仍属于excel内部的复制粘贴。excel可也拿到这个数据的类型是string。所以粘贴过去仍然是string

spreadjs是一个浏览器组件,所以外部复制粘贴(Ctrl+C,Ctrl+V)只能依赖于剪切板,从剪切板中能拿到的目前只是一个数字字符串。没有办法拿到其他的信息。所以对于数字字符串会都转换为数字。基于同样的原因,单元格的格式也是没有办法复制粘贴的

包括在不同页面的两个workbook之间复制粘贴,也是走的外部复制粘贴,没法保留上述内容


目前只能建议在粘贴前,预先对workbook中的目标单元格进行设置,设置为字符串格式(需要用户自己判断是否设置,或者通过程序的一些业务逻辑判断)
回复 使用道具 举报
sssssss
金牌服务用户   /  发表于:2023-3-3 10:40:24
3#
Richard.Ma 发表于 2023-2-27 11:35
这个目前没有办法解决。

从excel中粘贴string类型的数字到另一个excel中,这个仍属于excel内部的复制粘 ...

我对比了下粘贴string类型数字和粘贴number类型数字的参数,发现clipboardHtml 是不同的,是否可用这个进行数据类型判断呢?还是说仍旧建议用户自行判断?
image.png569714965.png
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-3 12:14:58
4#
是的,从这部分可以尝试判断出部分的格式信息,但是实际上除此之外,原始的值是拿不到的,也只能拿到显示的值字符串,所以只能说是部分场景下,你可以通过这里的信息自行做一些设置

你可以尝试在ClipboardPasting事件中。将cancel设置为true来阻止原本的粘贴逻辑
然后自己通过html中的信息做判断,给目标单元格设置需要的value和formatter
回复 使用道具 举报
sssssss
金牌服务用户   /  发表于:2023-3-3 15:16:50
5#
Richard.Ma 发表于 2023-3-3 12:14
是的,从这部分可以尝试判断出部分的格式信息,但是实际上除此之外,原始的值是拿不到的,也只能拿到显示的 ...

好的,谢谢,我们这里自己处理下
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-3 16:04:07
6#
好的,不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部