找回密码
 立即注册

QQ登录

只需一步,快速开始

fawinell

注册会员

6

主题

12

帖子

46

积分

注册会员

积分
46
fawinell
注册会员   /  发表于:2023-2-15 15:27  /   查看:868  /  回复:4
5金币
本帖最后由 fawinell 于 2023-2-15 15:34 编辑

- 我的代码

  1. function CustomDateFormat() {}

  2. CustomDateFormat.prototype = new SPREAD.Formatter.FormatterBase();

  3. CustomDateFormat.prototype.format = function (obj, formattedData) {
  4.     console.log({formattedData});
  5.     return 'text';
  6. };

  7. CustomDateFormat.prototype.parse = function (str) {
  8.     return SPREAD.Formatter.GeneralFormatter().parse(str);
  9. };
复制代码

- 我这里将 format 写死了,直接返回 'test',页面上不编辑的状态下确实展示了 text
image.png261246337.png
- 但是只要双击进入编辑状态,或者 getValue, 拿到的值就不对了。请问如何格式化这个实际的值?
image.png156167601.png

最佳答案

查看完整内容

您好, 单元格格式改变的是单元格显示的text值,而实际的value并不会变化。 如果想获取显示的text值,应使用getText()方法。

4 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-15 15:27:51
来自 3#
您好,

单元格格式改变的是单元格显示的text值,而实际的value并不会变化。
如果想获取显示的text值,应使用getText()方法。
回复 使用道具 举报
fawinell
注册会员   /  发表于:2023-2-15 15:37:05
2#
本帖最后由 fawinell 于 2023-2-15 15:38 编辑

复制代码

sheet.setFormatter(-1, 3, 'YYYY/MM/DD'); // 可以改变实际的值
sheet.setFormatter(-1, 3, new CustomDateFormat()); // 不行

为什么?
回复 使用道具 举报
sssssss
金牌服务用户   /  发表于:2023-3-29 19:57:05
4#
fawinell 发表于 2023-2-15 15:37
sheet.setFormatter(-1, 3, 'YYYY/MM/DD'); // 可以改变实际的值
sheet.setFor ...

同问,请问这个问题有结果了吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-30 16:31:55
5#
如版主的回复,setFormatter是不会改变原有值的,也就是说通过getValue得到的结果不会改变。

如果你们那边测试getValue的结果有差异,请描述一下重现问题的步骤
给该单元格setValue时,给的值是什么,然后设置了sheet.setFormatter(-1, 3, 'YYYY/MM/DD');后,值发生了变化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部