弹出File Browser窗口
PRIVATE FUNCTION cxrt020_open_file()
DEFINE l_dir LIKE type_t.chr500
DEFINE r_success LIKE type_t.num5
#
LET r_success = FALSE
CALL cl_client_browse_file() RETURNING l_dir
IF NOT cl_null(l_dir) THEN
CALL cxrt020_ins_excel(l_dir) RETURNING r_success
END IF
RETURN r_success
END FUNCTION
######按路径,把xls的数据按格式顺序ins到数据表,注意xls的文件名不能有中文或特殊符号,最好全英文文件名;
PRIVATE FUNCTION cxrt020_ins_excel(p_excelname)
DEFINE p_excelname LIKE type_t.chr1000 #excel档名
DEFINE r_success LIKE type_t.num5
DEFINE l_excelname STRING #excel档名
DEFINE l_count LIKE type_t.num10
DEFINE li_i LIKE type_t.num10
DEFINE li_j LIKE type_t.num10
DEFINE xlapp,iRes,iRow LIKE type_t.num5
DEFINE l_xrsguc RECORD LIKE xrsguc_t.*
DEFINE l_today LIKE type_t.dat
DEFINE l_n LIKE type_t.num5
WHENEVER ERROR CONTINUE
LET r_success = TRUE
LET l_today= cl_get_current()
LET l_count = LENGTH(p_excelname CLIPPED)
#转换路径分隔符
FOR li_i = 1 TO l_count
IF p_excelname[li_i,li_i] ="/" THEN
LET l_excelname = l_excelname CLIPPED,'\\'
ELSE
LET l_excelname = l_excelname CLIPPED,p_excelname[li_i,li_i]
END IF
END FOR
CALL ui.interface.frontCall('WinCOM','CreateInstance',
['Excel.Application'],[xlApp])
IF xlApp <> -1 THEN
CALL ui.interface.frontCall('WinCOM','CallMethod',
[xlApp,'WorkBooks.Open',l_excelname],[iRes])
IF iRes <> -1 THEN
CALL ui.interface.frontCall('WinCOM','GetProperty',
[xlApp,'ActiveSheet.UsedRange.Rows.Count'],[iRow])
IF iRow > 1 THEN
FOR li_i = 2 TO iRow
INITIALIZE l_xrsguc.* TO NULL
LET l_xrsguc.xrsgucent = g_enterprise
LET l_xrsguc.xrsgucsite = g_site
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',1).Value'],[l_xrsguc.xrsgucdocno])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',2).Value'],[l_xrsguc.xrsguc001])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',3).Value'],[l_xrsguc.xrsguc002])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',4).Value'],[l_xrsguc.xrsguc003])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',5).Value'],[l_xrsguc.xrsguc004])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',6).Value'],[l_xrsguc.xrsguc005])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',7).Value'],[l_xrsguc.xrsguc006])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',8).Value'],[l_xrsguc.xrsguc007])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',9).Value'],[l_xrsguc.xrsguc008])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',10).Value'],[l_xrsguc.xrsguc009])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',11).Value'],[l_xrsguc.xrsguc010])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',12).Value'],[l_xrsguc.xrsguc011])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',13).Value'],[l_xrsguc.xrsguc012])
CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',14).Value'],[l_xrsguc.xrsguc013])
#
INSERT INTO xrsguc_t VALUES l_xrsguc.*
IF SQLCA.sqlcode THEN
INITIALIZE g_errparam TO NULL
LET g_errparam.code = SQLCA.sqlcode
LET g_errparam.extend = 'INSERT INTO xrsguc_t'
LET g_errparam.popup = FALSE
CALL cl_err()
LET r_success = FALSE
EXIT FOR
END IF
END FOR
END IF
ELSE
INITIALIZE g_errparam TO NULL
LET g_errparam.code = 'axc-00387'
LET g_errparam.extend = '' #NO FILE
LET g_errparam.popup = TRUE
CALL cl_err()
LET r_success = FALSE
END IF
ELSE
INITIALIZE g_errparam TO NULL
LET g_errparam.code = 'axc-00387'
LET g_errparam.extend = '' #NO EXCEL
LET g_errparam.popup = TRUE
CALL cl_err()
LET r_success = FALSE
END IF
CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'Quit'],[iRes])
CALL ui.interface.frontCall('WinCOM','ReleaseInstance',[xlApp],[iRes])
RETURN r_success
END FUNCTION
转载请注明:赫非域 » T100——按xls格式批量导入数据