找回密码
 立即注册

QQ登录

只需一步,快速开始

spreadjs666
金牌服务用户   /  发表于:2023-12-22 15:15  /   查看:1879  /  回复:13
本帖最后由 Richard.Huang 于 2024-1-5 15:21 编辑

产品:SpreadJS
版本:V16

问题编号:SJS-22144

【v16】粘贴的数字转换为科学记数法,setvalue的展示为数字?如何统一呢?
123456789123456
image.png288165587.png

13 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-12-22 17:29:55
沙发
您好,
问题已复现,正在进一步调研具体原因,待有进展贴中通知您。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-2 14:03:44
板凳
更新进展:
需要与您确认下,这里的粘贴指的是从Excel复制粘贴至SpreadJS中,还是SpreadJS内部进行的复制粘贴呢?
另外,我测试如果直接双击单元格进入编辑状态,再输入 123456789123456,单元格文本也会显示为科学计数法,这对这一情况请问您有一致的需求吗?
是希望都显示为科学计数法还是数字呢
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-3 17:38:56
地板
请楼主补充以上信息,以便问题的进一步调研
回复 使用道具 举报
spreadjs666
金牌服务用户   /  发表于:2024-1-4 10:44:31
5#
Lynn.Dou 发表于 2024-1-2 14:03
更新进展:
需要与您确认下,这里的粘贴指的是从Excel复制粘贴至SpreadJS中,还是SpreadJS内部进行的复制 ...

您好,粘贴是指从外部粘贴(excel/另一个spread页面/输入框等等), 直接输入也期望统一,期望统一成科学记数法

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-4 14:03:19
6#
需求了解,待有调研进展了贴中通知。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-15 10:59:53
7#
经调研,此问题属于产品设计。如果通过代码setValue设置值,不会生成自动格式化的数字,所以无法通过科学计数法去解析该值。
可以设置formatter去实现期待效果:
  1. var sheet = spread.getActiveSheet();
  2. sheet.setValue(1, 1, 123456789123456);
  3. sheet.setFormatter(1, 1, '0.#####E+00');
复制代码

回复 使用道具 举报
spreadjs666
金牌服务用户   /  发表于:2024-1-15 16:33:58
8#
Lynn.Dou 发表于 2024-1-15 10:59
经调研,此问题属于产品设计。如果通过代码setValue设置值,不会生成自动格式化的数字,所以无法通过科学计 ...

你好,我同样的操作在excel中进行,excel不论输入还是粘贴都是科学计数法。
而框架中输入会根据列宽不同导致展示不同,列宽宽则展示所有数字,列宽窄则展示科学技术法。
并且我们的单元格输入是自定义单元格,所以走的setValue逻辑,目前是展示所有数字。
以上,会导致用户在使用时同样的内容页面展示不统一。
辛苦看下能不能从spreadjs层面解决这个问题,因为修改formatter相当于干涉了用户的输入内容,感觉不太合理。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-15 17:40:09
9#
对于SpreadJS原生的单元格,在数字较多的情况下,输入和粘贴也是会显示科学计数法的。
(比如例中的 123456789123456,即使列宽较长也是会显示科学计数法)

从描述中来看,您使用了自定义单元格,并且执行了setValue,这是导致用户“输入”与“粘贴”行为后单元格显示不一致的原因。
所以,建议从自定义单元格入手,您提供一个具体可复现描述问题的demo,我们调研看看是否可以在不setValue的情况下实现您的需求。
回复 使用道具 举报
spreadjs666
金牌服务用户   /  发表于:2024-1-23 14:51:13
10#
Lynn.Dou 发表于 2024-1-15 17:40
对于SpreadJS原生的单元格,在数字较多的情况下,输入和粘贴也是会显示科学计数法的。
(比如例中的 12345 ...

您好,这个表现不仅仅在于setValue,使用fromJSON的时候也会出现展示不为科学输入法的问题。
所以根本上是,底层存储内容相同时,数据展示不一致的问题,因此如果单单只处理setValue是无法完全解决问题的。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部