找回密码
 立即注册

QQ登录

只需一步,快速开始

Coco_

注册会员

13

主题

37

帖子

132

积分

注册会员

积分
132
Coco_
注册会员   /  发表于:2023-3-13 14:55  /   查看:1656  /  回复:7
10金币
单元格使用的是自定义的格式化,后面加了默认状态栏,未使用自定义格式化时状态栏可以求和,但是使用自定义的格式化就没有求和数据了。


以下是自定义格式化代码。

  1. //自定义格式化
  2.         function CustomNumberFormat() {
  3.    this.typeName = 'CustomNumberFormat';
  4.         }
  5.         // 创建一个基于 FormatterBase 的类
  6.         CustomNumberFormat.prototype = new GC.Spread.Formatter.FormatterBase();
  7.         //format 方法返回一个格式的字符串 formattedData可选参数,用于文本颜色设置
  8.         CustomNumberFormat.prototype.format = function (obj, formattedData) {
  9.     if (typeof obj === "number") {
  10.         return formatNumber(obj, formattedData);
  11.     } else if (typeof obj === "string") {
  12.         if ($.isNumeric(obj)) { // 如果字符串只包括数字
  13.            return formatNumber(parseFloat(obj), formattedData);
  14.         }
  15.     }

  16.     return obj ? obj.toString() : "";
  17.         };

  18.         function formatNumber(num, formattedData) {
  19.     if (isFinite(num)) {
  20.         var numArr = (num+"").split('.');
  21.         num = numArr[0];
  22.         for(var i = 0; i < Math.floor((num.length-(1+i))/3); i++){
  23.             num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
  24.         }
  25.         return num + ( numArr[1] ? "." +   numArr[1] : "");
  26.    }
  27.    return num.toString();
  28.         }
复制代码
image.png775340575.png



最佳答案

查看完整内容

原因是在您设置自定义格式后,再输入数值,单元格的实际value为字符串类型,如下图: 对于字符串类型数值,状态栏是不显示求和等信息的,这一设计也是与Excel一致的。 您可以新建一个sheet,通过setValue赋值“1”“2”等字符串数值,再观察下状态栏,验证此问题。

7 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-13 14:55:56
来自 4#


原因是在您设置自定义格式后,再输入数值,单元格的实际value为字符串类型,如下图:
image.png460769042.png
对于字符串类型数值,状态栏是不显示求和等信息的,这一设计也是与Excel一致的。
您可以新建一个sheet,通过setValue赋值“1”“2”等字符串数值,再观察下状态栏,验证此问题。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-13 17:37:46
2#
您好,
根据您提供的资料整理了个demo,测试未复现您的问题。如下图:
image.png396235350.png
如果我的理解有误,请在demo基础上补充上相关代码,需要能复现此问题,这边再验证调研下。

demo-designer模板 - V15.2.html

4.78 KB, 下载次数: 50

回复 使用道具 举报
Coco_
注册会员   /  发表于:2023-3-13 19:37:17
3#
image.png744403075.png

手动输入之后就没有求和项了
回复 使用道具 举报
Coco_
注册会员   /  发表于:2023-3-14 12:08:15
5#
我之前也怀疑是自定义格式返回的是文本的问题,但是不知道有没有办法解决。因为默认的数值格式不支持业务诉求
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-14 14:04:14
6#
如果单元格实际value为字符串,那么就会出现这个问题。可以这样理解,字符串类型并不是一个数值,所以状态栏这块原因前面也提到,这种设计是与Excel一致的。
所以,需要您结合业务需求,修改下自定义格式的代码逻辑了,使返回的value不能为字符串类型。
“默认的数值格式不支持业务诉求”您也可以结合业务描述下为什么数值格式不支持业务诉求,这边看看是否有其他方式。
回复 使用道具 举报
Coco_
注册会员   /  发表于:2023-3-17 14:48:46
7#
输入的内容是数值类型的,格式要求是: 1.显示千分位  2.整数情况不显示小数位,有小数位才显示小数位。 默认的格式化,整数也会保留小数如10.00这种。 不过两个格式业务上有划分区域,我调整格式化吧
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-17 15:48:21
8#
您先根据需求调整,有疑问可以再交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部