最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

TIPTOP EXCEL导入正常方法

开发相关 bron1984 8189浏览

前期文章中,有两三种导入方法。有的需要EXCEL处于打开状态,有的需要转成CSV。本例是最常用方法,如你想象中的样子。

。。。

FUNCTION t110_impexcel()
  DEFINE ls_str   STRING,
         ls_file  STRING,
         ls_loction STRING,
         gs_location STRING
         
  LET ls_str =cl_getmsg("lib-201",g_lang) 
  WHILE TRUE 
    PROMPT ls_str CLIPPED FOR gs_location
    ATTRIBUTE(WITHOUT defaults)
       
        ON action accept
           EXIT WHILE 
        ON action cancel
           LET gs_location=NULL 
           EXIT WHILE   
        ON action browse_document
           LET ls_file = cl_browse_file()
           IF ls_file IS NOT NULL THEN 
           	  LET gs_location = ls_file
           	END IF 
        ON idle g_idle_seconds
           CALL cl_on_idle()
           RETURN 
           
     END PROMPT 
     END WHILE 
   
   IF NOT cl_null(gs_location) THEN 
   	  CALL t110_impexcel_p(gs_location)
   	END IF 
           	
END FUNCTION 

#17011201
FUNCTION t110_impexcel_p(p_fileloc)
  DEFINE  l_flag       LIKE type_file.chr1
  DEFINE  p_fileloc   string
  DEFINE  xlApp,iRes,iRow,i,j INTEGER 
  DEFINE li_k,l_cnt LIKE  type_file.num5
  DEFINE li_i_r LIKE  type_file.num5
  DEFINE lr_err  DYNAMIC ARRAY OF RECORD 
                 line  string,
                 key1  string,
                 err   string 
         END RECORD 
  DEFINE l_abb RECORD LIKE abb_file.*
   
  CALL s_showmsg_init() 
  LET l_flag='Y'
  BEGIN WORK       
  CALL ui.interface.frontCall('WinCOM','CreateInstance',['Excel.Application'],[xlApp])
  IF xlApp <> -1 THEN 
  	 CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'WorkBooks.Open',p_fileloc],[iRes])
  
     IF iRes <> -1 THEN 
     	CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.UsedRange.Rows.Count'],[iRow])	 
     	  IF  iRow > 1 THEN 
     	  	 LET li_k = 1
     	  	 FOR i=2 TO iRow
     	  	   INITIALIZE l_abb.* TO NULL 
     	  	    
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',1).Value'],[l_abb.abb03])  
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',2).Value'],[l_abb.abb04]) 
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',3).Value'],[l_abb.abb05])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',4).Value'],[l_abb.abb06]) 
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',5).Value'],[l_abb.abb24])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',6).Value'],[l_abb.abb25])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',7).Value'],[l_abb.abb07f])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',8).Value'],[l_abb.abb07]) 
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',9).Value'],[l_abb.abb08])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',10).Value'],[l_abb.abb11]) 
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',11).Value'],[l_abb.abb12])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',12).Value'],[l_abb.abb13])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',13).Value'],[l_abb.abb14])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',14).Value'],[l_abb.abb31])      
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',15).Value'],[l_abb.abb35]) 
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',16).Value'],[l_abb.abb36])
     	      CALL ui.interface.frontCall('WinCOM','GetProperty',[xlApp,'ActiveSheet.Cells('||i||',17).Value'],[l_abb.abb37]) 
     	     
     	      LET l_abb.abb00=g_aba.aba00
     	      LET l_abb.abb01=g_aba.aba01
     	      LET l_abb.abb02=i-1
     	      LET l_abb.abblegal=g_aba.abalegal 
     	      LET l_cnt=0
     	      SELECT COUNT(0) INTO l_cnt FROM  aag_file WHERE aag01=l_abb.abb03 AND aagacti='Y' 
     	      IF l_cnt=0 THEN
     	      	 LET l_flag='N'
     	      	 CALL s_errmsg('',i-1,l_abb.abb03,'cgl-005',1) 
     	      END IF  
   	      
     	      LET l_cnt=0
     	      IF NOT cl_null(l_abb.abb05) AND l_abb.abb05<>' ' THEN  #部门不为空时,才进行此项
     	        SELECT count(0) INTO l_cnt FROM gem_file WHERE gem01=l_abb.abb05 AND gemacti='Y'      
     	        IF l_cnt=0 THEN 
     	      	   LET l_flag='N'
     	      	   CALL s_errmsg('',i-1,l_abb.abb05,'cgl-006',1) 
     	        END IF 
     	      END IF 
     	      LET l_cnt=0
     	      SELECT count(0) INTO l_cnt FROM azi_file WHERE azi01=l_abb.abb24 AND aziacti='Y' 
     	      IF l_cnt=0 THEN 
     	      	 LET l_flag='N'
     	      	 CALL s_errmsg('',i-1,l_abb.abb24,'cgl-008',1) 
     	      END IF 
            INSERT INTO abb_file VALUES(l_abb.*)
     	      IF SQLCA.sqlcode OR SQLCA.sqlerrd[3]=0 THEN 
     	      	  LET l_flag='N'
     	      	  CALL s_errmsg('',i-1,SQLCA.sqlcode,'cgl-007',1) 
     	      	 	CONTINUE FOR 
     	      END IF
     	     END FOR 
     	 END IF 
     	 
     ELSE 
     	     MESSAGE  'NO file' 
     END IF 
  ELSE 
     	     MESSAGE  'NO EXCEl'
  END IF  
  IF l_flag='Y' THEN 
  	SELECT sum(abb07) INTO g_aba.aba08 FROM abb_file WHERE abb01=g_aba.aba01 AND abb06='1'
  	SELECT sum(abb07) INTO g_aba.aba09 FROM abb_file WHERE abb01=g_aba.aba01 AND abb06='2'
  	IF cl_null(g_aba.aba08) THEN LET g_aba.aba08=0 END IF 
  	IF cl_null(g_aba.aba09) THEN LET g_aba.aba09=0 END IF 
  	UPDATE aba_file SET aba08=g_aba.aba08,
  	                    aba09=g_aba.aba09
  	WHERE aba01=g_aba.aba01
  	IF SQLCA.sqlcode THEN 
  		 LET l_flag='N'
       CALL s_errmsg('',0,SQLCA.sqlcode,'cgl-009',1) 
  	END IF 
  END IF   	  
  CALL ui.interface.frontCall('WinCOM','CallMethod',[xlApp,'Quit'],[iRes])
  CALL ui.interface.frontCall('WinCOM','ReleaseInstance',[xlApp],[iRes])
  IF l_flag='N' THEN 
  	ROLLBACK WORK 
  	CALL s_showmsg()
  ELSE 
  	COMMIT WORK
  	DISPLAY BY NAME g_aba.aba08,g_aba.aba09
    CALL t110_show()
  END IF   
    
END FUNCTION  

 

 

转载请注明:赫非域 » TIPTOP EXCEL导入正常方法