官方提供了一个获取数据定位的方法(MWE.Obj.getFieldPosition),但是返回的是
'1,3,4,3'
格式的字符串坐标,每次拆分再取值十分繁琐,下面提供一个获取内容思路,以及可复用的方法。
-
登录网页端后打开任意一个模板,填报、修改、查看方式都可以。
-
按F12打开开发者工具,切换到控制台,复制下面代码后,把
产品档案_主表
,产品编码
替换成实际的表名及字段名。MWE.Obj.getFieldPosition('产品档案_主表','产品编码')
输出:
第一组是正常获取到的内容,第二组是表名或字段名有误的返回,空字符
-
获取到的
4,4,4,4
分别为,起始行,起始列,结束行,结束列
,且每个数字都比在Excel中-1。 -
然后需要处理后利用
MWE.Obj.getActiveSheet().getValue()
提取当前表单内的实际内容。
-
完整代码:
function getFieldValue(tabName, fieldName) { function getValue(row, col) { let sheet = MWE.Obj.getActiveSheet() return sheet.getValue(row, col) } if (!tabName || !fieldName) return "" //如果参数为空,则返回空字符串,避免无效计算和不必要的错误 let posArr = MWE.Obj.getFieldPosition(tabName, fieldName).split(",") posArr = posArr.map(Number) //将字符串数组转化为数字数组 if (posArr.length != 4) return "" //如果数组长度不等于4,则返回空字符 if (posArr[0] === posArr[2] && posArr[1] === posArr[3]) { //如果起始截止行、列相同,则返回单个值 return getValue(posArr[0], posArr[1]) } else { //如果起始截止行、列不同,则返回数组,此处默认取向下扩展明细行 let data = [] for (let i = posArr[0]; i <= posArr[2]; i++) { data.push(getValue(i, posArr[1])) } return data } }
-
重复调用的步骤:
- 打开服务端安装目录/SSSoft/WEB/MyWeb
- 右键新建一个文本文件,重命名为
plugs.js
(任意名字+.js都可以) - 把上面的代码复制粘贴进去,保存关闭
- 找到同目录
./index.html
文件,右键以记事本方式打开,然后滚动到底部,在</body>
上一行插入一行空行,填入:<script src="plugs.js"></script>
- 如果刚才新建的文件名是其他名字,
plugs.js
也要是对应名字
- 保存Index.html文件
- 这时候已经可以在模板内的Web JS设置内添加代码了,调用方法
let a = getFieldValue('你的表名','你的字段名')
在WEB端生效需要刷新缓存:浏览器重新打开
http://你的IP/SSMISDIYWeb/MyWeb/
在登录之前按下shift+F5
强制刷新清空本页缓存
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。