找回密码
 立即注册

QQ登录

只需一步,快速开始

HEXIONLY

注册会员

7

主题

20

帖子

55

积分

注册会员

积分
55
HEXIONLY
注册会员   /  发表于:2022-7-21 22:17  /   查看:1290  /  回复:6
单元格对数值型计量单位的切换,例如:元,百元,千元,万元,亿元的切换,是否有相关方法或类型属性可自动转换,无需后台计算或者逐个单元格处理

6 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-22 14:10:48
沙发
没有整体转换的方法,只能通过循环设置单元格对应的formatter来进行转换。不过好的一点是setFormatter可以整行整列的设置格式
如下代码所示:
  1. //整行设置
  2. sheet.setFormatter(rowindex,-1,formatterString);
  3. //整列设置
  4. sheet.setFormatter(-1,colindex,formatterString);
复制代码
回复 使用道具 举报
HEXIONLY
注册会员   /  发表于:2022-7-22 14:20:13
板凳
Clark.Pan 发表于 2022-7-22 14:10
没有整体转换的方法,只能通过循环设置单元格对应的formatter来进行转换。不过好的一点是setFormatter可以 ...

那请问这个formatterString是怎么设置的呢?我看了api没找到相关的,我之前使用selectionsCell.formatter("0\.0, ");但是它只是左移了三位,然后我加两个斜杠它移动5位,没法控制。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-22 16:24:49
地板
本帖最后由 Lynn.Dou 于 2022-7-29 18:21 编辑

元:sheet.setFormatter(rowindex,colindex,'0"元"');
百元:sheet.setFormatter(rowindex,colindex,'0\\.00"百元"');
千元:sheet.setFormatter(rowindex,colindex,'0\\.000"千元"');
万元:sheet.setFormatter(rowindex,colindex,'0\\.0,"万元"');
回复 使用道具 举报
HEXIONLY
注册会员   /  发表于:2022-7-24 09:45:49
5#
Clark.Pan 发表于 2022-7-22 16:24
元:sheet.setFormatter(rowindex,colindex,'0"元"');
百元:sheet.setFormatter(rowindex,colindex,'0\.0 ...

这个不对呀,他只是保留小数位数,还有整行那个好像也不生效
回复 使用道具 举报
沉沉悬赏达人认证
金牌服务用户   /  发表于:2022-7-25 10:32:18
6#
  1. spread.suspendPaint();
  2.             let qianArray = [[80], [102], [2345], [13040], [123567], [1234670], [123789767], [12345154567]];
  3.             sheet.setArray(10, 10, qianArray)
  4.             qianArray.forEach((item, index) => {
  5.                 let num = item[0] + '';
  6.                 if (num.length < 3) {
  7.                     sheet.setValue(10, 11, parseInt(num))
  8.                     sheet.setFormatter(10, 11, '0"元"', GC.Spread.Sheets.SheetArea.viewport);
  9.                 }
  10.                 else if (num.length == 3) sheet.setFormula(10 + index, 11, `=ROUND(K${11 + index}/100,2)&"百元"`);
  11.                 else if (num.length == 4) sheet.setFormula(10 + index, 11, `=ROUND(K${11 + index}/1000,2)&"千元"`);
  12.                 else if (num.length >= 5 && num.length < 9) sheet.setFormula(10 + index, 11, `=ROUND(K${11 + index}/10000,2)&"万元"`);
  13.                 else if (num.length >= 9 && num.length < 13) sheet.setFormula(10 + index, 11, `=ROUND(K${11 + index}/100000000,2)&"亿元"`);
  14.             })
  15.             spread.resumePaint();
复制代码


评分

参与人数 1金币 +666 收起 理由
Clark.Pan + 666 赞一个!

查看全部评分

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-25 18:26:40
7#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部