找回密码
 立即注册

QQ登录

只需一步,快速开始

表白心迹

注册会员

7

主题

47

帖子

162

积分

注册会员

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

16 个回复

正序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-26 14:28:05
17#
回复 使用道具 举报
表白心迹
注册会员   /  发表于:2022-9-26 14:27:15
16#
Lynn.Dou 发表于 2022-9-26 14:08
您客气了,那本帖就先结贴了,有问题欢迎另开新帖交流。

好的,多谢!
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-26 14:08:21
15#
您客气了,那本帖就先结贴了,有问题欢迎另开新帖交流。
回复 使用道具 举报
表白心迹
注册会员   /  发表于:2022-9-26 09:36:49
14#
Lynn.Dou 发表于 2022-9-23 18:30
是的,EDATE公式最后返回的计算结果就是标准日期格式,“让页面显示和传入后台的参数一致”除了getText方法 ...

好的,谢谢
回复 使用道具 举报
表白心迹
注册会员   /  发表于:2022-9-23 17:28:57
12#
Ellia.Duan 发表于 2022-9-23 16:35
getValue 获取到的是标准的date值,getText获取到的是格式化的date值。设计getText()就是为了让用户获取 ...

所以最终就是没有办法通过直接设置公式让页面显示和传入后台的参数一致咯?
如果要,必须在请求后端接口入参前清洗数据,遍历循环替换掉2022-10-13T16:00:00.000Z这些东西咯?
至于你说的为什么后端必须传送格式化后的值那肯定希望你页面什么样传入就是什么样了,况且带T16:00:00.000Z这种格式着实不太好看~
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-23 16:35:10
11#
本帖最后由 Ellia.Duan 于 2022-9-23 16:38 编辑
表白心迹 发表于 2022-9-23 15:57
不太方便,没有setFormula或什么公式设置完之后前台显示和getValue获取是一致的那种公式么

getValue 获取到的是标准的date值,getText获取到的是格式化的date值。设计getText()就是为了让用户获取格式化后的值。


您一开始的问题是”有什么方法可以使页面展示与打印出内容保持一致“ ,如果仅仅是想获取格式化后的值个是可以用getText()来解决
您后面的问题是“后端传送只能传送getValue()获取到的值”这个问题与您一开始的问题 有什么关系呢?后端为什么必须传送格式化后的值。
您这边往后端传Date值也是可以的呀,后端将Date值返回给前端后,前端接收Date值,但是由于设置了formatter,最后也是显示的您想要的格式。

回复 使用道具 举报
表白心迹
注册会员   /  发表于:2022-9-23 15:57:56
10#
Ellia.Duan 发表于 2022-9-23 15:15
您这边往后台存的时候,不可以通过getText()获取的值传给后端吗?

不太方便,没有setFormula或什么公式设置完之后前台显示和getValue获取是一致的那种公式么
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-9-23 15:15:06
9#

您这边往后台存的时候,不可以通过getText()获取的值传给后端吗?
回复 使用道具 举报
表白心迹
注册会员   /  发表于: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 12:07:15
7#
您这边是否可以提供下您的相关代码,这边测试一下。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部