找回密码
 立即注册

QQ登录

只需一步,快速开始

华信富融专用2

初级会员

29

主题

86

帖子

241

积分

初级会员

积分
241
华信富融专用2
初级会员   /  发表于:2021-11-11 14:46  /   查看:2608  /  回复:9
5金币
传入整数,小数一位,或小数两位,这三种中的其中一种格式
    function setCellFormat(index, row, col, _value) {
        spread.getSheet(index).getCell(row, col).formatter(_value);
    }
var dot = $("#englishItem_price_length_cd").val();
var digit;      
if (dot == '01') {
            digit = "#,##0.00_ ";
        } else if (dot == '02') {
            digit = "#,##0.0_ ";
        } else if (dot == '03') {
            digit = "#,##0_ ";
        }
        for (var i = 0; i < estimateDetailCount; i++) {
            this.setCellFormat(0, row, col, digit)
        }

这样的话,如果传入的值是1.5  用整数formatter显示的值就变成了了2,传入的值是1.55 用小数点一位的格式formatter,显示的值就变成了1.6

如何实现不进行四舍五入的操作,只对数据进行切替,例如传入的值是1.55 用小数点一位的格式formatter,显示的值只变成了1.5  。

最佳答案

查看完整内容

上面这个截图就是实现的例子,里面的obj就是单元格的值,拿到这个值具体怎么裁剪就是js代码了,与产品无关,。例如你可以在搜索引擎查询如何利用js将1.55截取成1.5。再将这个值return,这样就是自定义的格式了。上面的这个demo原本应该显示1.55的,但是我在format返回了一个1.5,那么他的格式就是1.5了。

9 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-11 14:46:27
来自 4#
华信富融专用2 发表于 2021-11-11 16:35
那之前代码是如何进行四舍五入的呢?主要现在如果不需要四舍五入只切位的话,我不知道formatter之间逻辑 ...

上面这个截图就是实现的例子,里面的obj就是单元格的值,拿到这个值具体怎么裁剪就是js代码了,与产品无关,。例如你可以在搜索引擎查询如何利用js将1.55截取成1.5。再将这个值return,这样就是自定义的格式了。上面的这个demo原本应该显示1.55的,但是我在format返回了一个1.5,那么他的格式就是1.5了。
image.png138583983.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-11 15:55:43
2#
当前我们的设计就是会将数值四舍五入,同样在excel也是一致的。你可以考虑自定义格式,例如下图的简单示例。在format里面写自己需要的逻辑。
image.png209734191.png
回复 使用道具 举报
华信富融专用2
初级会员   /  发表于:2021-11-11 16:35:40
3#
Derrick.Jiao 发表于 2021-11-11 15:55
当前我们的设计就是会将数值四舍五入,同样在excel也是一致的。你可以考虑自定义格式,例如下图的简单示例 ...

那之前代码是如何进行四舍五入的呢?主要现在如果不需要四舍五入只切位的话,我不知道formatter之间逻辑的代码如何修改?
回复 使用道具 举报
华信富融专用2
初级会员   /  发表于:2021-11-11 18:52:42
5#
Derrick.Jiao 发表于 2021-11-11 18:03
上面这个截图就是实现的例子,里面的obj就是单元格的值,拿到这个值具体怎么裁剪就是js代码了,与产品无 ...

为什么我这创建不了一个基于 FormatterBase 的类
image.png823680419.png   spread中没有大写的Formatter方法,只有小写的formatter方法,里面也没有FormatterBase
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-12 08:50:04
6#
华信富融专用2 发表于 2021-11-11 18:52
为什么我这创建不了一个基于 FormatterBase 的类
  spread中没有大写的Formatter方法,只有小写的format ...

因为你的Spread没写对 image.png673615417.png
回复 使用道具 举报
华信富融专用2
初级会员   /  发表于:2021-11-12 10:56:31
7#
Derrick.Jiao 发表于 2021-11-12 08:50
因为你的Spread没写对

现在都好使了,但是还有一个问题。
image.png19728392.png
因为重写了formatter 所以切位时,
image.png862442931.png
var range = sheet.getRange(sel.row, sel.col, sel.rowCount, sel.colCount);
range.formatter()  返回的是一个方法

但是之前四舍五入的formatter返回的值都是var型的,用到了比如 【range.formatter().replace】这一些方法,现在返回的是方法就不能用这些方式,导致很多不匹配的地方,如何修改,让切位的formatter也返回var型的数据而不是方法呢?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-12 13:50:37
8#
华信富融专用2 发表于 2021-11-12 10:56
现在都好使了,但是还有一个问题。

因为重写了formatter 所以切位时,

这个通过formatter()方法返回的就是一个自定义的格式,就像你提供的截图返回的结果。无法返回像“0.00”这样的格式结果。
回复 使用道具 举报
华信富融专用2
初级会员   /  发表于:2021-11-12 15:16:32
9#
Derrick.Jiao 发表于 2021-11-12 13:50
这个通过formatter()方法返回的就是一个自定义的格式,就像你提供的截图返回的结果。无法返回像“0.00” ...

恩,现在没有问题了,我在后面用到toString的时候有typeOf判断了一下返回的值,如果返回的是object类型就不做tostring的一些方法
image.png705519714.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-12 17:29:25
10#
华信富融专用2 发表于 2021-11-12 15:16
恩,现在没有问题了,我在后面用到toString的时候有typeOf判断了一下返回的值,如果返回的是object类型就 ...

解决了就好,那这边就结帖了,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部