T100——按xls格式批量导入数据

 弹出File Browser窗口

 1 PRIVATE FUNCTION cxrt020_open_file()
 2 DEFINE l_dir        LIKE type_t.chr500
 3 DEFINE r_success   LIKE type_t.num5
 4     #
 5     LET r_success = FALSE
 6     CALL cl_client_browse_file() RETURNING l_dir
 7     IF NOT cl_null(l_dir) THEN
 8         CALL cxrt020_ins_excel(l_dir) RETURNING r_success
 9     END IF
10     RETURN r_success
11     
12 END FUNCTION

######按路径,把xls的数据按格式顺序ins到数据表,注意xls的文件名不能有中文或特殊符号,最好全英文文件名;

 1 PRIVATE FUNCTION cxrt020_ins_excel(p_excelname)
 2 DEFINE p_excelname LIKE type_t.chr1000  #excel档名
 3 DEFINE r_success   LIKE type_t.num5
 4 DEFINE l_excelname STRING               #excel档名
 5 DEFINE l_count     LIKE type_t.num10
 6 DEFINE li_i        LIKE type_t.num10
 7 DEFINE li_j        LIKE type_t.num10
 8 DEFINE xlapp,iRes,iRow    LIKE type_t.num5
 9 DEFINE l_xrsguc    RECORD LIKE xrsguc_t.*
10 DEFINE l_today     LIKE type_t.dat       
11 DEFINE l_n         LIKE type_t.num5
12 
13    WHENEVER ERROR CONTINUE
14    LET r_success = TRUE
15 
16    LET l_today= cl_get_current()
17    LET l_count = LENGTH(p_excelname CLIPPED)
18    #转换路径分隔符
19    FOR li_i = 1 TO l_count
20        IF p_excelname[li_i,li_i] ="/" THEN
21           LET l_excelname = l_excelname CLIPPED,'\'
22        ELSE
23           LET l_excelname = l_excelname CLIPPED,p_excelname[li_i,li_i]
24        END IF
25    END FOR
26 
27    CALL ui.interface.frontCall('WinCOM','CreateInstance',
28                                ['Excel.Application'],[xlApp])
29    IF xlApp <> -1 THEN
30       CALL ui.interface.frontCall('WinCOM','CallMethod',
31                                   [xlApp,'WorkBooks.Open',l_excelname],[iRes])
32       IF iRes <> -1 THEN
33          CALL ui.interface.frontCall('WinCOM','GetProperty',
34               [xlApp,'ActiveSheet.UsedRange.Rows.Count'],[iRow])
35          IF iRow > 1 THEN
36             FOR li_i = 2 TO iRow
37                 INITIALIZE l_xrsguc.* TO NULL
38                 LET l_xrsguc.xrsgucent = g_enterprise 
39                 LET l_xrsguc.xrsgucsite = g_site 
40                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',1).Value'],[l_xrsguc.xrsgucdocno])              
41                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',2).Value'],[l_xrsguc.xrsguc001])
42                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',3).Value'],[l_xrsguc.xrsguc002])
43                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',4).Value'],[l_xrsguc.xrsguc003])
44                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',5).Value'],[l_xrsguc.xrsguc004])
45                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',6).Value'],[l_xrsguc.xrsguc005])
46                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',7).Value'],[l_xrsguc.xrsguc006])
47                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',8).Value'],[l_xrsguc.xrsguc007])
48                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',9).Value'],[l_xrsguc.xrsguc008])
49                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',10).Value'],[l_xrsguc.xrsguc009])
50                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',11).Value'],[l_xrsguc.xrsguc010])
51                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',12).Value'],[l_xrsguc.xrsguc011])
52                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',13).Value'],[l_xrsguc.xrsguc012])
53                 CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',14).Value'],[l_xrsguc.xrsguc013])
54                 #
55                 INSERT INTO xrsguc_t VALUES l_xrsguc.*
56                 IF SQLCA.sqlcode THEN
57                    INITIALIZE g_errparam TO NULL
58                    LET g_errparam.code = SQLCA.sqlcode
59                    LET g_errparam.extend = 'INSERT INTO xrsguc_t'
60                    LET g_errparam.popup = FALSE
61                    CALL cl_err()
62                    LET r_success = FALSE
63                    EXIT FOR
64                 END IF
65             END FOR
66          END IF
67       ELSE
68          INITIALIZE g_errparam TO NULL
69          LET g_errparam.code = 'axc-00387'
70          LET g_errparam.extend = ''   #NO FILE
71          LET g_errparam.popup = TRUE
72          CALL cl_err()
73          LET r_success = FALSE
74       END IF
75    ELSE
76       INITIALIZE g_errparam TO NULL
77       LET g_errparam.code = 'axc-00387'
78       LET g_errparam.extend = ''  #NO EXCEL
79       LET g_errparam.popup = TRUE
80       CALL cl_err()
81       LET r_success = FALSE
82    END IF
83 
84    CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'Quit'],[iRes])
85    CALL ui.interface.frontCall('WinCOM','ReleaseInstance',[xlApp],[iRes])
86 
87    RETURN r_success
88 
89 END FUNCTION
原文地址:https://www.cnblogs.com/xiaoli9627/p/10530737.html