Excel數(shù)據(jù)導(dǎo)入Mobox低代碼平臺(tái)
我們系統(tǒng)上線的時(shí)候,原先的歷史數(shù)據(jù)是沒(méi)有的,為了快速接軌企業(yè)已有數(shù)據(jù),我們可以通過(guò)excel 對(duì)歷史數(shù)據(jù)進(jìn)行導(dǎo)入操作。導(dǎo)入一般可以通過(guò)腳本做一些定制開(kāi)發(fā)來(lái)實(shí)現(xiàn)
列子:
數(shù)據(jù)導(dǎo)入的sheet 要求
這個(gè)系統(tǒng)只能導(dǎo)入,左邊第一個(gè)sheet (命名無(wú)所謂)(注意:若數(shù)據(jù)列表 這個(gè)sheet左邊還有隱藏的sheet,那么系統(tǒng)也不能獲取 數(shù)據(jù)列表sheet頁(yè)的數(shù)據(jù))
對(duì)Excel單元格的要求
單元個(gè)里面的數(shù)據(jù),只能是字符串或數(shù)值。若是計(jì)算公式或函數(shù) ,將無(wú)法獲取
另外,單元個(gè)內(nèi)容 不能出現(xiàn) /\<> & 符號(hào),不能有換行或大量空格
分析excel格式
1、字段分3類(lèi):
- 關(guān)鍵字段
如,產(chǎn)品名稱 ,這個(gè)是必須有數(shù)值的
- 屬性字段
用于登記各種屬性信息
- 計(jì)算字段
若有數(shù)據(jù),則直接獲取
若沒(méi)有,可以通過(guò)lua腳本計(jì)算生成
這種字段,一般也是必須有數(shù)值的
2、第一行是表頭行,數(shù)據(jù)行從第二行開(kāi)始
定義導(dǎo)入功能
通過(guò)Mobox 3000 功能點(diǎn)進(jìn)行定義,設(shè)置界面如下:
導(dǎo)入腳本,參考:
json? = require(“json”)mobox = require(“OILua_JavelinExt”)require(“oi_basestrfunc”)function ImportKA(strLuaDEID)? ? local nRet, strRetInfo? ? — 獲取導(dǎo)入的數(shù)據(jù), 返回 [[{“attr”:”xx”,”value”:””},…]]? ? — V2.0? ? nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)? ? if (nRet ~= 0 or strRetInfo == ”) then? ? ? ? mobox.error(strLuaDEID, “無(wú)法獲取導(dǎo)入數(shù)據(jù)!”)? ? ? ? return? ? end? ? local input_rows = json.decode(strRetInfo)? ? local n, nCount, nValue, nMaxRow, nRow? ? local strAddAttr = ”? ? — 一些關(guān)鍵屬性? ? local strKAName = ”? ? local strKAType = ”? ? local strArea = ”? ? — 步驟1 獲取從excel導(dǎo)入的一行數(shù)據(jù),根據(jù)excel的列定義進(jìn)行屬性組合 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? ? ? ? ? ? ? ? — 根據(jù)導(dǎo)入的excel列頭名稱進(jìn)行判斷? ? ? ? ? ? ? ? — 關(guān)鍵屬性判斷? ? ? ? ? ? ? ? if (strAttr == “客戶名稱”) then? ? ? ? ? ? ? ? ? ? if (strValue == ”) then? ? ? ? ? ? ? ? ? ? ? ? mobox.error(strLuaDEID, strAttr .. “不能為空!”)? ? ? ? ? ? ? ? ? ? ? ? return? ? ? ? ? ? ? ? ? ? end? ? ? ? ? ? ? ? ? ? strKAName = strValue? ? ? ? ? ? ? ? ? ? strAddAttr = strAddAttr .. ‘{“attr”:”S_KA_NAME”,”value”:”‘ .. strKAName .. ‘”},’? ? ? ? ? ? ? ?— 常規(guī)屬性? ? ? ? ? ? ? ? elseif (strAttr == “所屬地區(qū)”) then? ? ? ? ? ? ? ? ? ? strArea = strValue? ? ? ? ? ? ? ? ? ? strAddAttr = strAddAttr .. ‘{“attr”:”S_AREA”,”value”:”‘ .. strArea .. ‘”},’? ? ? ? ? ? ? ? elseif (strAttr == “客戶類(lèi)型”) then? ? ? ? ? ? ? ? ? ? strKAType = strValue? ? ? ? ? ? ? ? ? ? strAddAttr = strAddAttr .. ‘{“attr”:”S_KA_TYPE”,”value”:”‘ .. strKAType .. ‘”},’? ? ? ? ? ? ? ? end? ? ? ? ? ? end? ? ? ? end? ? ? ? –去除最后一個(gè),? ? ? ? local strAddAttr1 = trim_laster_char(strAddAttr)? ? ? ? — 步驟2 根據(jù)客戶名稱來(lái)判斷導(dǎo)入的客戶是否已經(jīng)存在? ? ? ? —? ? ? ?如果已經(jīng)存在,根據(jù)導(dǎo)入的數(shù)據(jù)進(jìn)行覆蓋? ? ? ? —? ? ? ?如果不存在需要?jiǎng)?chuàng)建? ? ? ? local attrs? ? ? ? local strCondition = “S_KA_NAME='” .. strKAName .. “‘”? ? ? ? nRet, strRetInfo = mobox.existThisData(strLuaDEID, “客戶”, strCondition)? ? ? ? if (nRet ~= 0) then? ? ? ? ? ? mobox.error(strLuaDEID, “在檢查客戶是否存在時(shí)失敗! ” .. strRetInfo)? ? ? ? ? ? return? ? ? ? end? ? ? ? if (strRetInfo == ‘yes’) then? ? ? ? ? ? — 已經(jīng)存在,根據(jù)導(dǎo)入的數(shù)據(jù)進(jìn)行覆蓋? ? ? ? ? ? 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? ? ? ? ? ? — 創(chuàng)建客戶? ? ? ? ? ? –mobox.writeSysLog(“strAddAttr1”, strAddAttr1)? ? ? ? ? ? strAddAttr1 = ‘[‘ .. strAddAttr1 .. ‘]’? ? ? ? ? ? –mobox.writeSysLog(“strAddAttr2”, strAddAttr1)? ? ? ? ? ? nRet, strRetInfo = mobox.createDataObj(strLuaDEID, “客戶”, strAddAttr1)? ? ? ? ? ? if (nRet ~= 0) then? ? ? ? ? ? ? ? mobox.error(strLuaDEID, “創(chuàng)建客戶失敗! ” .. strRetInfo )? ? ? ? ? ? ? ? return? ? ? ? ? ? end? ? ? ? end? ? endend