找回密码
 立即注册

QQ登录

只需一步,快速开始

newAll

中级会员

74

主题

196

帖子

786

积分

中级会员

积分
786
newAll
中级会员   /  发表于:2024-4-28 10:49  /   查看:4390  /  回复:10
10金币
本帖最后由 newAll 于 2024-4-28 10:52 编辑

问题描述:公式引用的单元格,setValue的数字是带“.00”,但实际显示没有保留".00"。例如下图所示,在C4单元格设置公式"=D4",在D4单元格setValue("628.00"),实际只保留整数部分。请问显示机制如此吗?如果我们的需求是和setValue的值格式保持一制,请问如何处理?
image.png335176085.png
image.png11752318.png
image.png98673399.png

最佳答案

查看完整内容

您好,这是因为您如果手动在单元格中输入内容,那么会有autoFormatter属性(这是我们SpreadJS的设计,为了帮助自动格式化用户的内容,避免用户的重复性操作),下图展示了这个过程,A1单元格是没有手动输入的,展示的是10.00,而A2单元格是先手动输入了一个值后再setValue,我们可以看到有相关的autoFormatter属性,因此如果您期望setValue的一个字符串数字能够完整展示出来,建议将单元格formatter设置成文本

10 个回复

倒序浏览
最佳答案
最佳答案
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 10:49:50
来自 9#
newAll 发表于 2024-4-28 19:02
我也是在咱们官网的在线表格编辑器里测试的。我又尝试了下,以您动图的方式,确实不复现,但在您的基础上 ...

您好,这是因为您如果手动在单元格中输入内容,那么会有autoFormatter属性(这是我们SpreadJS的设计,为了帮助自动格式化用户的内容,避免用户的重复性操作),下图展示了这个过程,A1单元格是没有手动输入的,展示的是10.00,而A2单元格是先手动输入了一个值后再setValue,我们可以看到有相关的autoFormatter属性,因此如果您期望setValue的一个字符串数字能够完整展示出来,建议将单元格formatter设置成文本

  1. sheet.setFormatter(0,1,"@")
复制代码
image.png386295470.png
回复 使用道具 举报
trace
初级会员   /  发表于:2024-4-28 11:14:03
2#
因为使用setValue设置上的值,就只是值而已,并不包含格式,“628.00”其实是包含了format的。可以在Excel里直接试一下,直接输入628.00,按下回车后Excel也会显示628,这也是因为没有设置格式的原因。
之前在论坛里有类似的问题,你可以看一下https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=216588&page=1#pid787993
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 11:59:43
3#
您好,您可以参考楼上同学的回复,其次,观察到您setValue进去的就是一个字符串的数字,正常情况下是不会去除您的小数的,建议提供一份可供我们复现的demo,方便我们去进行调研和测试
image.png601558837.png
回复 使用道具 举报
newAll
中级会员   /  发表于:2024-4-28 12:37:23
4#
Richard.Huang 发表于 2024-4-28 11:59
您好,您可以参考楼上同学的回复,其次,观察到您setValue进去的就是一个字符串的数字,正常情况下是不会去 ...

您试试给A1设置公式=B1 再通过setValue给B1设置“1.00” ,就能复现
回复 使用道具 举报
newAll
中级会员   /  发表于:2024-4-28 12:50:58
5#
trace 发表于 2024-4-28 11:14
因为使用setValue设置上的值,就只是值而已,并不包含格式,“628.00”其实是包含了format的。可以在Excel ...

好的,谢谢,我参考下
回复 使用道具 举报
trace
初级会员   /  发表于:2024-4-28 13:59:57
6#
不好意思,我又仔细看了一下,如果setValue是用了双引号的话,那确实是相当于设置了字符串在单元格中,而不是数字,那确实应该是显示“628.00”
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 17:38:07
7#
newAll 发表于 2024-4-28 12:37
您试试给A1设置公式=B1 再通过setValue给B1设置“1.00” ,就能复现

您好,我按照您的说法先设置了公式,再通过setValue设置了值,但是依然没有复现您的问题,我是在咱们官网的在线表格编辑器中进行的测试,您可以可以尝试一下:https://demo.grapecity.com.cn/SpreadJS/WebDesigner/

setValue.gif875283202.png
回复 使用道具 举报
newAll
中级会员   /  发表于:2024-4-28 19:02:56
8#
Richard.Huang 发表于 2024-4-28 17:38
您好,我按照您的说法先设置了公式,再通过setValue设置了值,但是依然没有复现您的问题,我是在咱们官网 ...

我也是在咱们官网的在线表格编辑器里测试的。我又尝试了下,以您动图的方式,确实不复现,但在您的基础上,在B1手动输入数字后,再通过sheet.setValue(0,1,"10.00")就不带.00了呢

image.png283120116.png
回复 使用道具 举报
newAll
中级会员   /  发表于:2024-4-29 13:16:04
10#
Richard.Huang 发表于 2024-4-29 10:48
您好,这是因为您如果手动在单元格中输入内容,那么会有autoFormatter属性(这是我们SpreadJS的设计,为 ...

好的,辛苦您解答,非常感谢~
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部