# 校验 单元格的校验是为了避免用户录入不合要求的错误数据,保证填报数据的规范、准确。在制作填报表时,设置数据的校验规则,对用户录入的数据进行合法性检查,录入不合法数据时,给出友好提示。 产品中提供了四种设置校验的方式:数据类型校验、校验函数、校验表达式、JS校验。 不同的校验方式适用于不同的应用场景,用户可以根据需要进行选择。其中数据类型校验最为简单、快捷,也是最常用的方式,但是灵活性较低,不适用于太复杂的校验。并且每个单元格只能设置一条校验条件。 其它三种校验方式,使用相对复杂一些,但是灵活性高,适用于各种复杂的校验场景。并且可以为同一个单元格设置多条校验规则和不同的出错提示。 后面详细介绍每种校验方式的特点和使用方法。 ## 数据类型校验 数据类型校验是最简单,最常用的校验方式。用户只需选择,允许填写的数据的类型,例如字符串或数字。再设置允许输入的数据范围。再在出错提示中输入出错提示即可。 当进行数据填报时,输入了不正确的数据类型或者超出了允许的取值范围数据,就会弹出出错提示信息。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_505332bb4bb5ed5d48da05fe43d287dd_r.png) ### 允许为空 当用户误点入某设置校验属性的单元格或暂时不想填报某设置校验的单元格。这时勾选允许为空选项,可在移出焦点时不进行校验。或当一张表中部分单元格未输入值(这些单元格有校验但是是忽略空值),点击提交时不会触发校验。 ### 立即校验 当用户在单元格输入不符合规定的值时,勾选立即校验后会立即触发校验;取消勾选后会在保存提交时校验。 ### 不通过可提交 在填报报表中,用户往往由于某些原因,即使提交的数据不合法,数据校验不通过,但是仍需提交。为了解决此问题, 勾选【不通过可提交后】仍然可以保存提交数据。 ## 校验函数 系统中提供了一些常用的校验函数,用户可以直接选择使用,也可以根据自己的需求预定义校验函数,在制作报表时,直接选择定义好的函数来进行校验。系统内置校验函数的配置存放在mis2\vrsr\config\jsExportExcelConfig.xml中。用户自定义校验函数可以通过mis2\vrsr\config\configcustomerJsExportExcelConfig.xml来配置,格式参考系统自带的校验函数配置文件。可选校验函数为两个配置的并集,当两个配置文件配置了同一个函数时,取用户自定义配置文件中的配置,校验函数的设置界面如下: ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_f7b8fac3cd6aa2210b8ecaebb4e251c8_r.png) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_71f3c4e8ab5bd168dd024527ac9e2ccb_r.png) 引用单元格值注意事项: 1. 在校验和自动计算中引用单元格的值时,如果校验或计算的数据类型不是数值型,需要使用 A1.toString()或者str(A1)将单元格的数据类型转换为字符串。 2. 对扩展单元格值引用时,普通填报和行式填报表引用方式不同: -如果随着单元格的扩展,合法性检查或自动计算属性要被复制到每一行每一列,且被引用的单元格也跟着动态变化,那么该单元格要加上${},表示动态引用,例如${A1},${A2}等。 -若是行式报表则不需要加${},直接写A1,A2即可。 ## 校验表达式 校验表达式为一个结果返回TRUE的表达式,结果不为该值时均认为校验不通过。同时需要指定校验失败提示信息。提示信息也可以是表达式。 产品中内置实现了大量的函数,用户可以再设置校验表达式时直接进行调用,表达式的定义可以通过表达式编辑器来完成。具体包含的函数和函数的说明可以在设计界面进行查看。 例如:要校验A5单元格输入的日期,不能晚于或等于当天。可以设置表达式为:if(daysAfter(now(),A5)>=0,false,true) 表达式中使用了:if()、daysAfter、now()这三个内置的函数。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_4c68d759f962a1745b74473d06b78788_r.png) ## js函数校验 JS校验与函数校验类似,用户可以事先定义好js函数,JS函数返回的计算结果为逻辑值,数据有效时为TRUE,数据无效时为FALSE。 表达式遵从javascript语法规则,表达式可以使用一个表达式,也可以调用javascript函数,例如:校验B2单元格为介于1-6的小数 validCheckNum(${B2}.toString(),"0","1","6","true")。校验表达式可以引用单元格值。 自定义javascript函数,并在自定义的javascript函数中封装校验数据的业务逻辑,然后在填报属性的校验公式里直接调用自定义的函数名。 使用自定义合法性校验函数基本流程如下。 第一步:定义一个简单的自定义校验函数 ```javascript ``` ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_c1831dc5ce7ddc8e46fac955b62b7f71_r.png) ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_87fc72a8eca3664f3c26595aa4cd84d9_r.png) 第二步:在填报属性的校验公式里写check(${B3}.toString()),既对B3单元格,及由B3扩展出来的单元格进行数据校验 第三步:在web服务器上发布这个报表。