找回密码
 立即注册

QQ登录

只需一步,快速开始

zhouhao

中级会员

69

主题

163

帖子

694

积分

中级会员

积分
694
zhouhao
中级会员   /  发表于:2021-11-28 14:36  /   查看:1644  /  回复:3
本帖最后由 Derrick.Jiao 于 2021-11-29 10:59 编辑

spreadjs使用粘贴格式对一个日期格式单元格粘贴背景时,单元格类型被变为常规,但是展示值还是日期格式,而excel变为了数字
图片.png381008300.png
这边貌似是因为excel不是将日期以OADate的形式储存的值,而是以数字+自定义格式来储存的,是否有办法更改spreadjs对日期格式的默认存储方式从而修正这个不一致性呢


3 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-29 09:34:55
沙发
你好,请问这个问题应该如何复现呢?请提供复现问题的步骤,这边测试一下。另外,关于“更改spreadjs对日期格式的默认存储方式”这个问题,这边暂无对应的方法可以提供,这个可能就涉及到了底层的逻辑等较多层面的考虑。
回复 使用道具 举报
zhouhao
中级会员   /  发表于:2021-11-29 10:07:05
板凳
Derrick.Jiao 发表于 2021-11-29 09:34
你好,请问这个问题应该如何复现呢?请提供复现问题的步骤,这边测试一下。另外,关于“更改spreadjs对日期 ...

随便找个常规单元格输入日期字符串2012/12/17  8:20:21,再找个常规单元格只设置背景色,然后复制背景色到输入了日期的单元格就行了,excel这个时候会将日期变为数字,而spreadjs不会变
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-29 10:59:25
地板
本帖最后由 Derrick.Jiao 于 2021-12-13 09:25 编辑
zhouhao 发表于 2021-11-29 10:07
随便找个常规单元格输入日期字符串2012/12/17  8:20:21,再找个常规单元格只设置背景色,然后复制背景色 ...

了解了,这边调研一下看下是否有是产品设计,并且看下是否有workaround。
——————————————————————————————
经确认,该行为属于产品设计。
原因1:
Excel是一个应用程序,当将数据应用到单元格中时,它会直接为单元格设置格式。
SpreadJS是一个组件,作为一个组件,不能擅自污染客户的数据,单元格格式也是一种数据。
如果想要与excel有相同的行为,可以监听ValueChanged事件,然后自己给出格式。
原因2:
Excel的数据系统实际上没有日期类型值,所有日期类型值都将存储为OADate,然后不同的格式将给出不同的显示。
但对于SpreadJS,单元格可以接受任何内容,并且日期类型也是单元格的正确数据值。

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