07.02.03.tiptop集成篇(4gl扩展功能 集成java:封装java的poi包设配4gl 案例 导入excle)
2026/7/24 20:48:04 网站建设 项目流程

本页目录

  • 1、案例
  • 2、测试

  • 闲鱼DKLi1717: 引用POI包Excel批量处理
    • s_poi_excel.4gl
  • 下载excle的模板到桌面anmt200.xlsx

案例

  • p_test.4fd
<?xmlversion="1.0"encoding="UTF-8"?><ManagedFormgstVersion="22800"name="ManagedForm"uid="{2b41e64b-b5a8-42eb-a856-c2e80d7d16b3}"><AGSettings/><RecordadditionalTables=""joinLeft=""joinOperator=""joinRight=""name="s_email"order=""uid="{d7e34c48-750d-4f0b-a17b-f04e0949bb58}"where=""/><RecordadditionalTables=""joinLeft=""joinOperator=""joinRight=""name="s_pmd"order=""uid="{63a46eb9-f9b8-4526-a2cd-4faf9f248688}"where=""/><FormgridHeight="6"gridWidth="40"name="Form"text="Form"><VBoxgridHeight="6"gridWidth="38"name="VBox1"posX="1"posY="0"><GridgridHeight="4"gridWidth="38"name="Grid1"posX="0"posY="1"/></VBox></Form><DiagramLayout><![CDATA[AAAAAgAAAEwAewBkADcAZQAzADQAYwA0ADgALQA3ADUAMABkAC0ANABmADAAYgAtAGEAMQA3AGIALQBmADAANABlADAAOQA0ADkAYgBiADUAOAB9QFwAAAAAAABAaqAAAAAAAD+WhysCDEm+AQAAAEwAewA2ADMAYQA0ADYAZQBiADkALQBmADkAYgA4AC0ANAA1ADIANgAtAGEAMgBjAGQALQA0AGYAYQBmADkAZgAyADQAOAA2ADgAOAB9QCQAAAAAAABAJAAAAAAAAD+RaHKwIMSeAQ==]]></DiagramLayout></ManagedForm>
  • p_test.4gl
IMPORT os IMPORT JAVA org.apache.poi.xssf.usermodel.XSSFWorkbook IMPORT JAVA org.apache.poi.xssf.usermodel.XSSFSheet IMPORT JAVA org.apache.poi.xssf.usermodel.XSSFRow IMPORT JAVA org.apache.poi.xssf.usermodel.XSSFCell DATABASE ds GLOBALS"../../config/top.global"GLOBALS DEFINE g_curs_index LIKE type_file.num10 DEFINE g_row_count LIKE type_file.num10 DEFINE filename STRING DEFINE workbook XSSFWorkbook DEFINE sheet XSSFSheet DEFINE row XSSFRow DEFINE cell XSSFCell END GLOBALS MAIN DEFINE p_row,p_col LIKE type_file.num5 LET p_row=ARG_VAL(1)LET p_col=ARG_VAL(2)LETg_curs_index=ARG_VAL(3)LETg_row_count=ARG_VAL(3)OPTIONS FORM LINE FIRST +2, MESSAGE LINE LAST, PROMPT LINE LAST, INPUT NO WRAP DEFER INTERRUPT IF(NOT cl_user())THEN EXIT PROGRAM END IF WHENEVER ERROR CALL cl_err_msg_log IF(NOT cl_setup("CZZ"))THEN EXIT PROGRAM END IF CALL cl_used(g_prog,g_time,1)RETURNING g_time LET p_row=5LET p_col=10OPEN WINDOW test_w AT p_row,p_col WITH FORM"czz/42f/p_test"ATTRIBUTE(STYLE=g_win_style CLIPPED)CALL cl_ui_init()CALL test_menu()CLOSE WINDOW test_w CALL cl_used(g_prog,g_time,2)RETURNING g_time END MAIN# @mathodName: test_menu# @author:DKLi1717 2665252078@qq.com# @date:Created in 2025-03-14# @description: 菜单栏位置FUNCTION test_menu()MENU""BEFORE MENU CALL cl_navigator_setting(g_curs_index, g_row_count)ON ACTION import_excel CALL uploadEXCLE()CALL readEXCLE()ON IDLE g_idle_seconds CALL cl_on_idle()CONTINUE MENU ON ACTION locale CALL cl_dynamic_locale()CALL cl_show_fld_cont()ON ACTION qbe_select CALL cl_qbe_select()ON ACTIONhelpCALL cl_show_help()ON ACTION about CALL cl_about()ON ACTION controlg CALL cl_cmdask()ON ACTIONexitLET INT_FLAG=FALSE EXIT MENU ON ACTION close LETINT_FLAG=FALSE EXIT MENU END MENU END FUNCTION# @mathodName: uploadEXCLE# @author:DKLi1717 2665252078@qq.com# @date:Created in 2025-03-14# @description: 上传文件到服务器FUNCTION uploadEXCLE()DEFINE l_location STRING, ls_str STRING WHILE TRUE PROMPT ls_str CLIPPED FOR l_location ATTRIBUTE(WITHOUT DEFAULTS)ON ACTION accept EXIT WHILE ON ACTION cancel EXIT WHILE ON ACTION browse_document LET l_location=cl_browse_file()ON IDLE g_idle_seconds CALL cl_on_idle()RETURN END PROMPT END WHILE# 获取上传附件的名称LETfilename=l_location WHILE filename.getindexof(os.path.separator(),1)>0LETfilename=filename.substring(filename.getindexof('/',1)+1,filename.getlength())END WHILE LETstatus=cl_upload_file(l_location,"/u1/out/"||filename)IF status THEN CALL cl_err('','abm-019',0)ELSE CALL cl_err('','abm-020',0)END IF END FUNCTION# @mathodName: readEXCLE# @author:DKLi1717 2665252078@qq.com# @date:Created in 2025-03-14# @description: 读readEXCLE信息FUNCTION readEXCLE()CALL workbook_open("/u1/out/"||filename)RETURNING workbookDISPLAY"sheets数:"||workbook.getNumberOfSheets()LETsheet=workbook.getSheetAt(0)#获取第1个sheetDISPLAY"行数:"||sheet.getPhysicalNumberOfRows()LET row=sheet.getRow(1)#获取第2行DISPLAY"列数:"||row.getPhysicalNumberOfCells()LET cell=row.getCell(1)#获取第2列DISPLAY"列类型:"||cell.getCellType()DISPLAY"列字符值:"||cell.getStringCellValue()LET cell=row.getCell(4)#获取第5列DISPLAY"列类型:"||cell.getCellType()DISPLAY"列数字值:"||cell.getNumericCellValue()DISPLAYSFMT("Evaluated value in cell B12 = %1", workbook.getCreationHelper().createFormulaEvaluator().evaluate(cell).getNumberValue())END FUNCTION

测试

# 上传代码cd/u1/toptest/topcust/csub/4gl put s_poi_excel.4glcd/u1/toptest/topcust/czz/4gl put p_test.4gl# 编译代码cd/u1/toptest/topcust/csub/4gl r.c2 s_poi_excelcd/u1/toptest/topcust/czz/4gl r.c2 p_test r.l2 p_test exe2 p_test

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询