02.02.04.tiptop:组件篇(4gl 查询:导出数据到指定excle模板上)

本页目录:

  • 1、封装
  • 2、调用案例

# 开一个上传代码cmd窗口
sftp BL066912@ip
cd /u1/toptest/tiptop/lib/4gl
put cl_data_to_excel.4gl

# 开一个编译代码的cmd窗口
ssh BL066912@ip -p 22
cd /u1/toptest/tiptop/lib/4gl
r.c2 cl_data_to_excel
r.l2 lib

exe2 p_link 

在这里插入图片描述

调用案例

  • 1、程序p_link要连接cl_rex_create_xls

在这里插入图片描述

  • 2、capq105.xlsx文件要放到42r里面,程序名称和文件名称要一样

  • 3、4gl引用

# 引用
IMPORT os  
DATABASE ds
GLOBALS "../../config/top.global"
# 全局变量
DEFINE xlapp                  INTEGER,
       xlwb                   INTEGER,
       p_row     LIKE type_file.num5,
       p_col     LIKE type_file.num5
       
# @mathodName: MAIN
# @author:xxxx
# @date:Created in 2024-05-17
# @description:主程序
MAIN
	IF (NOT cl_user()) THEN
      EXIT PROGRAM
    END IF
    WHENEVER ERROR CALL cl_err_msg_log
    IF (NOT cl_setup("CAP")) THEN
      EXIT PROGRAM
    END IF
    CALL  cl_used(g_prog,g_time,1) RETURNING g_time  

    LET p_row = 5 LET p_col = 10  -- 給變量賦值
    OPEN WINDOW p130_w AT p_row,p_col WITH FORM "cap/42f/capq105"
      ATTRIBUTE (STYLE = g_win_style CLIPPED)

        CALL export_excle()

    CLOSE WINDOW q105_w
    CALL  cl_used(g_prog,g_time,2) RETURNING g_time 
END MAIN

# @mathodName: export_excle
# @author:xxxx
# @date:Created in 2024-04-18
# @description: 导出指定模板的excle
FUNCTION export_excle()
  
  DEFINE windows_file_name  STRING,
         l_cur_clipboard    STRING,
         ires               integer,
         i                  integer,
         la_cells DYNAMIC ARRAY OF STRING
  
--initialization of global variables
  LET xlapp = -1
  LET xlwb = -1
  
  CALL cl_open_excel_tempate(null) RETURNING xlapp, xlwb,windows_file_name
   IF cl_null(xlapp) THEN
      -- 打開EXCEL 應用失敗
      return
   END IF

   IF cl_null(xlwb) THEN
      -- 打開EXCEL 模板失敗
      return
   END if
   
    CALL ui.interface.frontCall('standard','cbget',[],[l_cur_clipboard])  ## 保存現有剪貼板  
   
   FOR i=1 TO 10
       call la_cells.clear()
       LET la_cells[1]=i
       
       CALL cl_Excel_WriteRow(xlApp, xlwb, 5+i ,1, la_cells) RETURNING ires  # 把資料寫到第6行起 
       IF cl_null(ires) THEN
         return
       END if

       CALL cl_err((i/10)*100,'log-012',0)  ## 进度
       
   END FOR

   CALL ui.interface.frontCall('standard','cbset',[],[l_cur_clipboard])   ## 恢復剪貼板
   CALL ui.interface.frontCall('WinCOM','CallMethod',[xlwb, 'save' ],[ires])  ## 保存EXCEL
   CALL cl_Excel_COMCleanup(xlwb) 
   CALL cl_Excel_COMCleanup(xlapp)
   
   CALL freeMemory()  
   CALL ui.interface.FrontCall('standard','shellexec',[windows_file_name],[iRes])
	RETURN

END FUNCTION

FUNCTION freeMemory()
 DEFINE res INTEGER
  IF xlwb != -1 THEN
    CALL ui.Interface.frontCall("WinCOM","ReleaseInstance", [xlwb], [res] )
  END IF
  IF xlapp != -1 THEN
    CALL ui.Interface.frontCall("WinCOM","ReleaseInstance", [xlapp], [res] )
  END IF
END FUNCTION
  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DKLi1717

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值