案例中心 视频中心

Excel数据导入Mobox低代码平台 Excel数据导入Mobox低代码平台

Excel数据导入Mobox低代码平台

分类:二次开发 产品中心 实施方案 129

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.0
    nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)
    if (nRet ~= 0 or strRetInfo == ”) then
        mobox.error(strLuaDEID, “无法获取导入数据!”)
        return
    end
    local input_rows = json.decode(strRetInfo)
    local n, nCount, nValue, nMaxRow, nRow
    local strAddAttr = ”
    — 一些关键属性
    local strKAName = ”
    local strKAType = ”
    local strArea = ”
    — 步骤1 获取从excel导入的一行数据,根据excel的列定义进行属性组合 strAddAttr
    nMaxRow = #input_rows
    for nRow = 1, nMaxRow do
        input = input_rows[nRow]
        nCount = #input
        — V2.1
        strAddAttr = ”
        strKAName = ”
        strKAType = ”
        strArea = ”
        for n = 1, nCount do
            strAttr = input[n].attr
            strValue = input[n].value
            if (strAttr ~= ” and strValue ~= ”) then
                — 根据导入的excel列头名称进行判断
                — 关键属性判断
                if (strAttr == “客户名称”) then
                    if (strValue == ”) then
                        mobox.error(strLuaDEID, strAttr .. “不能为空!”)
                        return
                    end
                    strKAName = strValue
                    strAddAttr = strAddAttr .. ‘{“attr”:”S_KA_NAME”,”value”:”‘ .. strKAName .. ‘”},’
               — 常规属性
                elseif (strAttr == “所属地区”) then
                    strArea = strValue
                    strAddAttr = strAddAttr .. ‘{“attr”:”S_AREA”,”value”:”‘ .. strArea .. ‘”},’
                elseif (strAttr == “客户类型”) then
                    strKAType = strValue
                    strAddAttr = strAddAttr .. ‘{“attr”:”S_KA_TYPE”,”value”:”‘ .. strKAType .. ‘”},’
                end
            end
        end
        –去除最后一个,
        local strAddAttr1 = trim_laster_char(strAddAttr)
        — 步骤2 根据客户名称来判断导入的客户是否已经存在
        —       如果已经存在,根据导入的数据进行覆盖
        —       如果不存在需要创建
        local attrs
        local strCondition = “S_KA_NAME='” .. strKAName .. “‘”
        nRet, strRetInfo = mobox.existThisData(strLuaDEID, “客户”, strCondition)
        if (nRet ~= 0) then
            mobox.error(strLuaDEID, “在检查客户是否存在时失败! ” .. strRetInfo)
            return
        end
        if (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) then
                mobox.error(strLuaDEID, strRetInfo)
                return
            end
        elseif (strRetInfo == ‘no’) then
            — 创建客户
            –mobox.writeSysLog(“strAddAttr1”, strAddAttr1)
            strAddAttr1 = ‘[‘ .. strAddAttr1 .. ‘]’
            –mobox.writeSysLog(“strAddAttr2”, strAddAttr1)
            nRet, strRetInfo = mobox.createDataObj(strLuaDEID, “客户”, strAddAttr1)
            if (nRet ~= 0) then
                mobox.error(strLuaDEID, “创建客户失败! ” .. strRetInfo )
                return
            end
        end
    end
end
标签:低代码脚本 上一篇: 下一篇:
展开更多
预约软件体验

loading...