鼎捷T100 EXCEL读取、校验

今日在批处理作业中,根据读取excel的功能中添加了对于excel模板的校验,做防呆处理,特此记录

PRIVATE FUNCTION cxxxp999_import(p_excelname) #cxxp999为自定义的批次处理作业
DEFINE p_excelname LIKE type_t.chr1000
DEFINE l_excelname STRING
DEFINE li_i LIKE type_t.num10
DEFINE xlapp,iRes,iRow LIKE type_t.num5
DEFINE l_err_message STRING

#此处定义的就是excel表格中的数据集合
DEFINE l_excel RECORD
   l_xxxxdocno LIKE xxxx_t.xxxxdocno,
   l_xxxx004 LIKE xxxx_t.xxxx004
END RECORD


DEFINE f_success LIKE type_t.num5 #定义首行校验的布尔值
DEFINE f_1,f_2 STRING #定义首行的值


WHENEVER ERROR CONTINUE

LET f_success = TRUE #默认首行校验成功
LET f_1 =NULL
LET f_2 =NULL #初始化首行的值
 
  #创建EXCEL实例
    CALL ui.interface.frontCall('WinCOM','CreateInstance',['Excel.Application'],[xlApp])
    IF xlApp <> -1 THEN#excel表格为空
        CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'WorkBooks.Open',l_excelname],[iRes])#新建excel文件
        IF iRes <> -1 THEN #excel表格为空
            CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.UsedRange.Rows.Count'],[iRow])
            IF iRow > 1 THEN #获取excel数据
 
                        
 			    CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells(1,1).Value'],[f_1]) #获取excel表格中第一行第一列的值
 				CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells(1,2).Value'],[f_2]) #获取excel表格中第一行第二列的值
                        
                #判断第一行的一、二列是否为指定的值,来确认是否符合业务处理的需求     
                 IF cl_null(f_1) OR f_1 !='A' THEN
                    LET f_success = FALSE
                    LET l_err_message = l_err_message,"第一列应为A"
                 END IF

                 IF cl_null(f_2) OR f_2 !='B' THEN
                    LET f_success = FALSE
                    LET l_err_message = l_err_message,"第二列应为B"
                 END IF                      


                 #根据f_success的情况返回报错
                 IF f_success = TRUE THEN

			        FOR li_i = 2 TO iRow#第二行开始读,读到最后一行
                     INITIALIZE l_excel.* TO NULL#初始化数据集,将表格中的数据读到数据集中
                     CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',1).Value'],[l_excel.l_xxxxdocno])
                     CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||li_i||',2).Value'],[l_excel.l_xxxx004])
                        
                        #**业务逻辑代码***

                 ELSE #如果f_success 不为TRUE则表示excel表格有误,执行报错
                        INITIALIZE g_errparam TO NULL
                        LET g_errparam.code = '!'
                        LET g_errparam.extend = 'EXCEL文件不正确,请确认',l_err_message
                        LET g_errparam.popup = TRUE
                        CALL cl_err() 
                 END IF #f_success
 
 
 			END IF
                  
        ELSE
               INITIALIZE g_errparam TO NULL
                LET g_errparam.code = '!'
                LET g_errparam.extend = 'NO FILE'
                LET g_errparam.popup = TRUE
                CALL cl_err()      
        END IF#excel表格为空
      
   ELSE      
           INITIALIZE g_errparam TO NULL
                LET g_errparam.code = '!'
                LET g_errparam.extend = 'NO EXCEL'
                LET g_errparam.popup = TRUE
                CALL cl_err()        
  END IF#excel表格为空

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值