找回密码
 立即注册

QQ登录

只需一步,快速开始

表白心迹

注册会员

7

主题

47

帖子

162

积分

注册会员

积分
162
表白心迹
注册会员   /  发表于:2022-9-22 10:33  /   查看:2968  /  回复:16
1金币
如题,通过setFormula 设置EDATE公式处理日期后,页面展示正常,但通过getValue打印和接口入参却是如下图,请求版主帮忙解答,有什么方法可以使页面展示与打印出内容保持一致,多谢!
image.png874467468.png

最佳答案

查看完整内容

是的,EDATE公式最后返回的计算结果就是标准日期格式,“让页面显示和传入后台的参数一致”除了getText方法,目前也没有更好的API建议了。具体可以参见前面的回复。

16 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-22 10:33:22
来自 13#
是的,EDATE公式最后返回的计算结果就是标准日期格式,“让页面显示和传入后台的参数一致”除了getText方法,目前也没有更好的API建议了。具体可以参见前面的回复。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-22 16:23:29
2#
本帖最后由 Ellia.Duan 于 2022-9-22 16:37 编辑

您好,在SpreadJS中,有两种方式获取单元格的值,一个是getValue ,一个是getText。

两者区别在于:getText()可以获取指定单元格中的格式化文本
如下图所示:在A1单元格中设置了值'2022/7/4',随后设置了公式。最后分别用getText、getValue 获取了值。
image.png79881285.png


image.png824194030.png
回复 使用道具 举报
表白心迹
注册会员   /  发表于:2022-9-22 17:21:58
3#
通过
sheet.setFormula(8,7,`=EDATE(AA2,1)`)
sheet.setFormatter(8,7,'yyyy-mm-dd')设置后页面显示依然没有问题 image.png663675536.png
但打印和接口入参依然是 image.png777002258.png
有什么办法可以使入参和页面展示一致呢?
回复 使用道具 举报
表白心迹
注册会员   /  发表于:2022-9-22 17:31:08
4#
Ellia.Duan 发表于 2022-9-22 16:23
您好,在SpreadJS中,有两种方式获取单元格的值,一个是getValue ,一个是getText。

两者区别在于:getT ...

通过
sheet.setFormula(8,7,`=EDATE(AA2,1)`)
sheet.setFormatter(8,7,'yyyy-mm-dd')设置后页面显示依然没有问题,
但打印和接口入参依然是,
有什么办法可以使入参和页面展示一致呢?
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-22 17:47:42
5#
您这边用了getText()方法仍然显示 image.png289766844.png 这个吗?
这边经过测试,暂时没有发现您的问题。
附件中有测试demo

getText.html

3.07 KB, 下载次数: 118

回复 使用道具 举报
表白心迹
注册会员   /  发表于:2022-9-22 18:43:27
6#
Ellia.Duan 发表于 2022-9-22 17:47
您这边用了getText()方法仍然显示这个吗?
这边经过测试,暂时没有发现您的问题。
附件中有测试demo

getText()方法获取到的格式是正确的,
但现在需要,初始化对某列设置setFormula公式后,setFormatter格式化,往后台提交数据发现还是
2022-10-13T16:00:00.000Z这种格式,难道保存前必须自己校验取截取,没有方法可以页面展示和往后台提交的结构保持一致?
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-23 12:07:15
7#
您这边是否可以提供下您的相关代码,这边测试一下。
回复 使用道具 举报
表白心迹
注册会员   /  发表于:2022-9-23 14:02:12
8#
Ellia.Duan 发表于 2022-9-23 12:07
您这边是否可以提供下您的相关代码,这边测试一下。
  1. export default(params) =>{
  2.   const { spread } = params;
  3.   const row = sheet.getRowCount();

  4.   for (let r = 1; r < row; r += 1) {
  5.     // B列设置为对应A列新增的日期
  6.     sheet.setFormula(r, 1, `=EDATE(A${r + 1},2)`);
  7.     sheet.setFormatter(r, 1, 'yyyy-mm-dd')
  8.   }
  9. }
  10. // 页面填充数据展示正确,但往后台保存发现是2022-10-13T16:00:00.000Z这种格式
复制代码
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-23 15:15:06
9#

您这边往后台存的时候,不可以通过getText()获取的值传给后端吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部