请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

LilaS
中级会员   /  发表于:2025-6-9 16:45  /   查看:72  /  回复:7
100金币
本帖最后由 LilaS 于 2025-6-9 16:49 编辑



我想把公式

A33为该单元格本身 修约逻辑自定义到这里的一个选项
类似于此处的0.00 选了0.00 就是四舍五入保留小数后两位
怎么实现?

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

7 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-6-9 17:36:22
沙发
您好,
“A33为该单元格本身 ”结合图片来看如何理解呢?
您详细说明下想实现的效果,可以将截图这个文件一并提供,便于我们理解此需求。
回复 使用道具 举报
LilaS
中级会员   /  发表于:2025-6-9 18:05:23
板凳
Lynn.Dou 发表于 2025-6-9 17:36
您好,
“A33为该单元格本身 ”结合图片来看如何理解呢?
您详细说明下想实现的效果,可以将截图这个文 ...

写错了 想写的是H186 我上传了个sjs附件


想实现 在B1 输入1.225后 经过修约格式计算 B1显示为1.22
类似于选单元格格式中自定义的0.00的功能

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-6-10 13:59:27
地板
上述截图您已经通过公式实现了修约计算了,不过是在B2定义的公式。
您是想在B1设置公式的同时,在B1内再输入1.225,最终计算结果为1.22吗?
如果是,二者其实是矛盾的,因为输入单元格值后公式就会被覆盖,反之亦然。
为什么不直接设置单元格格式 0.00 呢?
回复 使用道具 举报
LilaS
中级会员   /  发表于:2025-6-10 14:54:59
5#
Lynn.Dou 发表于 2025-6-10 13:59
上述截图您已经通过公式实现了修约计算了,不过是在B2定义的公式。
您是想在B1设置公式的同时,在B1内再输 ...

是有点矛盾 所以我想自定义一个类似于选择0.00 就能自动处理本单元格的修约功能
不能直接设置0.00格式啊 跟我的函数输出结果不同 输入1.225 我的函数会出1.22 ,0.00格式会出1.23啊
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-6-10 17:44:45
6#
“我想自定义一个类似于选择0.00 就能自动处理本单元格的修约功能”
您期待的表现形式是什么,比如说点击一个按钮,还是在工具栏增加一个功能项?
请详细描述下,这样我们好协助您调研方案。
回复 使用道具 举报
LilaS
中级会员   /  发表于:2025-6-10 18:21:59
7#
Lynn.Dou 发表于 2025-6-10 17:44
“我想自定义一个类似于选择0.00 就能自动处理本单元格的修约功能”
您期待的表现形式是什么,比如说点击 ...



右侧选项里新增一个我自己定义的特殊格式
这个特殊格式选了后 会让A1单元格的1.225 经过计算公式显示成1.22

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-6-11 15:03:01
8#
如您截图所示,单元格格式中定义了一些规则,允许用户去自定义。但是基于您的需求,调研后发现Excel默认的原生格式都是四舍五入逻辑,即无法通过自定义规则去实现。

事实上,SpreadJS提供了自定义格式的能力(继承FormatterBase,注意与您截图所示的自定义概念做区分),在学习指南有相关介绍:
https://demo.grapecity.com.cn/sp ... om-formatter/purejs

示例代码如下:
  1. function CustomNumberFormat() {
  2.             }

  3.             CustomNumberFormat.prototype = new GC.Spread.Formatter.FormatterBase();

  4.             CustomNumberFormat.prototype.format = function (obj, formattedData) {
  5.                 console.log(obj);
  6.                 if (typeof obj === "number") {
  7.                     var value = Math.trunc(obj * 100) / 100;
  8.                     return value.toString();
  9.                 } else {
  10.                     return obj ? obj.toString() : "";
  11.                 }

  12.             };
  13.             CustomNumberFormat.prototype.parse = function (str) {
  14.                 return new GC.Spread.Formatter.GeneralFormatter().parse(str);
  15.             };

  16.             sheet.setValue(0, 0, 123.234);
  17.             sheet.setValue(1, 0, 12.225);
  18.             sheet.getRange(0, 0, 10, 1).formatter(new CustomNumberFormat());
复制代码




这种方式下,就不支持在单元格格式弹窗中添加此自定义格式了,可以在工具栏新增一个button(或其他方式),核心是调用formatter方法应用该自定义格式。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

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