Excel数据导入Mobox低代码平台
我们系统上线的时候,原先的历史数据是没有的,为了快速接轨企业已有数据,我们可以通过excel 对历史数据进行导入操作。导入一般可以通过脚本做一些定制开发来实现
列子:
数据导入的sheet 要求
这个系统只能导入,左边第一个sheet (命名无所谓)(注意:若数据列表 这个sheet左边还有隐藏的sheet,那么系统也不能获取 数据列表sheet页的数据)
对Excel单元格的要求
单元个里面的数据,只能是字符串或数值。若是计算公式或函数 ,将无法获取
另外,单元个内容 不能出现 /\<> & 符号,不能有换行或大量空格
分析excel格式
1、字段分3类:
- 关键字段
如,产品名称 ,这个是必须有数值的
- 属性字段
用于登记各种属性信息
- 计算字段
若有数据,则直接获取
若没有,可以通过lua脚本计算生成
这种字段,一般也是必须有数值的
2、第一行是表头行,数据行从第二行开始
定义导入功能
通过Mobox 3000 功能点进行定义,设置界面如下:
导入脚本,参考:
json = require(“json”)mobox = require(“OILua_JavelinExt”)require(“oi_basestrfunc”)function ImportKA(strLuaDEID)local nRet, strRetInfo— 获取导入的数据, 返回 [[{“attr”:”xx”,”value”:””},…]]— V2.0nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)if (nRet ~= 0 or strRetInfo == ”) thenmobox.error(strLuaDEID, “无法获取导入数据!”)returnendlocal input_rows = json.decode(strRetInfo)local n, nCount, nValue, nMaxRow, nRowlocal strAddAttr = ”— 一些关键属性local strKAName = ”local strKAType = ”local strArea = ”— 步骤1 获取从excel导入的一行数据,根据excel的列定义进行属性组合 strAddAttrnMaxRow = #input_rowsfor nRow = 1, nMaxRow doinput = input_rows[nRow]nCount = #input— V2.1strAddAttr = ”strKAName = ”strKAType = ”strArea = ”for n = 1, nCount dostrAttr = input[n].attrstrValue = input[n].valueif (strAttr ~= ” and strValue ~= ”) then— 根据导入的excel列头名称进行判断— 关键属性判断if (strAttr == “客户名称”) thenif (strValue == ”) thenmobox.error(strLuaDEID, strAttr .. “不能为空!”)returnendstrKAName = strValuestrAddAttr = strAddAttr .. ‘{“attr”:”S_KA_NAME”,”value”:”‘ .. strKAName .. ‘”},’— 常规属性elseif (strAttr == “所属地区”) thenstrArea = strValuestrAddAttr = strAddAttr .. ‘{“attr”:”S_AREA”,”value”:”‘ .. strArea .. ‘”},’elseif (strAttr == “客户类型”) thenstrKAType = strValuestrAddAttr = strAddAttr .. ‘{“attr”:”S_KA_TYPE”,”value”:”‘ .. strKAType .. ‘”},’endendend–去除最后一个,local strAddAttr1 = trim_laster_char(strAddAttr)— 步骤2 根据客户名称来判断导入的客户是否已经存在— 如果已经存在,根据导入的数据进行覆盖— 如果不存在需要创建local attrslocal strCondition = “S_KA_NAME='” .. strKAName .. “‘”nRet, strRetInfo = mobox.existThisData(strLuaDEID, “客户”, strCondition)if (nRet ~= 0) thenmobox.error(strLuaDEID, “在检查客户是否存在时失败! ” .. strRetInfo)returnendif (strRetInfo == ‘yes’) then— 已经存在,根据导入的数据进行覆盖strCondition = “S_KA_NAME='” .. strKAName .. “‘”strSetSQL = “S_KA_NAME = ‘” .. strKAName ..”‘ , S_KA_TYPE ='” ..strKAType .. “‘ , S_AREA = ‘” .. strArea ..”‘ “nRet, strRetInfo = mobox.updateDataAttrByCondition(strLuaDEID, “客户”, strCondition, strSetSQL)if (nRet ~= 0) thenmobox.error(strLuaDEID, strRetInfo)returnendelseif (strRetInfo == ‘no’) then— 创建客户–mobox.writeSysLog(“strAddAttr1”, strAddAttr1)strAddAttr1 = ‘[‘ .. strAddAttr1 .. ‘]’–mobox.writeSysLog(“strAddAttr2”, strAddAttr1)nRet, strRetInfo = mobox.createDataObj(strLuaDEID, “客户”, strAddAttr1)if (nRet ~= 0) thenmobox.error(strLuaDEID, “创建客户失败! ” .. strRetInfo )returnendendendend
上一篇: 用户提示不存在的判断及解决方法
下一篇: 通过Mobox导入项目清单详细说明