找回密码
 立即注册

QQ登录

只需一步,快速开始

nbygu

初级会员

28

主题

105

帖子

263

积分

初级会员

积分
263
nbygu
初级会员   /  发表于:2023-8-24 13:33  /   查看:2189  /  回复:10
var validator = spreadNS.DataValidation.creatFormulaValidator("AND(TEXTVALIDATE(INDIRECT(ADDRESS(ROW(),COLUMN())),true,false,false,false,false,false,false,false,false,false,false,false,false,false))");
validator.highlightStyle({
    type: GC.Spread.Sheets.DataValidation.HightlightType.dogEar,
    color: "red",
    position: GC.Spread.Sheets.DataValidation.HightlightPosition.topLeft
}) ;
validator.ignoreBlank(false);
spread.getSheet(0).setDataValidator(0,0,validator);
这样设置必须输入的单元格格式,使用saveAs下载下来之后,更改这个单元格的值,光标移开会报不符合单元格格式什么玩意的,咋回事啊?
要把这个 validator改成 var validator = spreadNS.DataValidation.creatFormulaValidator("AND(TEXTVALIDATE(INDIRECT(ADDRESS(ROW(),COLUMN())),false,false,true,true,false,false,false,false,false,false,false,false,false),LENB(INDIRECT(ADDRESS(ROW(),COLUMN()))) <=8)"); 这个就好用,为啥啊?



10 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-24 15:51:42
沙发
您是否可以截个图或者录个动图,这边看一下您那边的效果?
回复 使用道具 举报
nbygu
初级会员   /  发表于:2023-8-24 16:45:38
板凳
Ellia.Duan 发表于 2023-8-24 15:51
您是否可以截个图或者录个动图,这边看一下您那边的效果?

下载之后,把光标点进去,在移出来,就这样了
_cgi-bin_mmwebwx-bin_webwxgetmsgimg__&amp;MsgID=5936763538357454776&amp;skey=@crypt_.jpg
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-24 17:39:34
地板
nbygu 发表于 2023-8-24 16:45
下载之后,把光标点进去,在移出来,就这样了

也就是说,使用您贴出的这段代码

  1. var validator = spreadNS.DataValidation.creatFormulaValidator("AND(TEXTVALIDATE(INDIRECT(ADDRESS(ROW(),COLUMN())),true,false,false,false,false,false,false,false,false,false,false,false,false,false))");
  2. validator.highlightStyle({
  3.     type: GC.Spread.Sheets.DataValidation.HightlightType.dogEar,
  4.     color: "red",
  5.     position: GC.Spread.Sheets.DataValidation.HightlightPosition.topLeft
  6. }) ;
  7. validator.ignoreBlank(false);
  8. spread.getSheet(0).setDataValidator(0,0,validator);
复制代码



验证有问题,比如一个单元格验证后应该是正确的,但是鼠标点击后会提示错误,但是使用您贴出的第二段代码没有这个问题?

回复 使用道具 举报
nbygu
初级会员   /  发表于:2023-8-24 18:04:31
5#
Ellia.Duan 发表于 2023-8-24 17:39
也就是说,使用您贴出的这段代码



对对,这俩个认证的东西不一样,第一个有问题的是必须输入的验证,第二个没有问题是半角数字和半角英字的验证,按理说下载下来这两个认证都不好用才对,但是结果是第一个认证,下载下来会出现图片那样的现象,第二个认证,下载下来没有问题,单元格可以随便输入也不会报错
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-25 09:33:27
6#
建议您上传下您的excel文件,这边复现下这个问题。
回复 使用道具 举报
nbygu
初级会员   /  发表于:2023-8-25 10:46:03
7#
Ellia.Duan 发表于 2023-8-25 09:33
建议您上传下您的excel文件,这边复现下这个问题。

你试试这个,下载下来之后,动一下图片里那个单元格,看看会不会报错
捕获.PNG

test (2).zip

3.24 MB, 下载次数: 156

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-8-25 11:12:55
8#
nbygu 发表于 2023-8-25 10:46
你试试这个,下载下来之后,动一下图片里那个单元格,看看会不会报错

您好,我这边复制了您对的数据,粘贴到excel中,然后对H11单元格做数据校验,设置了数据验证,如下图所示:
image.png503308104.png
点击此单元格是出现校验的。
image.png275264891.png
其次,关于公式AND(TEXTVALIDATE(INDIRECT(ADDRESS(ROW(),COLUMN())) 我这里不太明白您这个公式意思

INDIRECT公式主要是获取其他单元格的值,但是您的参数是ADDRESS(ROW(),COLUMN(),也就是获取本单元格的值,excel直接提示
image.png52629698.png

是否可以留下您的联系方式,电话沟通一下。


回复 使用道具 举报
nbygu
初级会员   /  发表于:2023-8-25 11:30:29
9#
Ellia.Duan 发表于 2023-8-25 11:12
您好,我这边复制了您对的数据,粘贴到excel中,然后对H11单元格做数据校验,设置了数据验证,如下图所示 ...

这个公式是想check这个单元格必须输入,再配合spreadjs里面的那个validationError事件,起到验证之后报错的作用,这个方法在spreadjs中就是好用的,但是不知道为什么下载下来就变成这样了,这个只是一个大共同方法里面的其中一个,除了这个必须输入的公式,还有下面这个验证半角数字和半角英文的公式,但是下面这个公式就没有问题var validator = spreadNS.DataValidation.createFormulaValidator("AND(TEXTVALIDATE(INDIRECT(ADDRESS(ROW(),COLUMN())),false,false,true,true,false,false,false,false,false,false,false,false,false),LENB(INDIRECT(ADDRESS(ROW(),COLUMN()))) <=8)"),这验证下载下来就不会报验证,搞不懂了。
回复 使用道具 举报
nbygu
初级会员   /  发表于:2023-8-25 14:25:50
10#
Ellia.Duan 发表于 2023-8-25 11:12
您好,我这边复制了您对的数据,粘贴到excel中,然后对H11单元格做数据校验,设置了数据验证,如下图所示 ...

解决了,改公式了,感谢感谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部