tiptop使用java的poi包实现EXCEL导入导出功能

4gl可以调用java的poi包实现EXCEL的导入导出,今天分享一个EXCEL导入的功能! 
一:环境搭建 
1:poi文件导入 
首先下载POI文件(找不到的可以私信我),解压后上传到ERP的服务器中 
一般位置放在$TOP/ds4gl2/bin/javaad/jar,当然,你也可以根据喜好自行定义! 
然后,在系统中编辑tiptop_env文件,路径在$TOP/bin/tiptop_env 这里(重要文件,编辑前记得备份,弄坏了会导致系统瘫痪) 
打开文件,将CLASSPATH 的环境变量添加一个poi文件的路径, 
范例:CLASSPATH=$TOP/ds4gl2/bin/poi-3.17.jar:$TOP/ds4gl2/bin/caozq/jxl.jar;export CLASSPATH(系统有CLASSPATH变量用在后面加,用:隔开其他的变量,没有就再文末添加) 
2:第一个步骤配置好了后,就可以愉快的调用java的poi包啦~

以下为导入功能使用范例,可以参考

# Pattern name...: cl_import_czq_excel.4gl
# Descriptions...: 采用Java POI方式导入MS Excel
# Date & Author..: 18/09/18 caozq
IMPORT os
IMPORT JAVA org.apache.poi.ss.usermodel.IndexedColors
IMPORT JAVA org.apache.poi.hssf.usermodel.HSSFDataFormat
IMPORT JAVA org.apache.poi.hssf.usermodel.HSSFWorkbook
IMPORT JAVA org.apache.poi.hssf.usermodel.HSSFSheet
IMPORT JAVA org.apache.poi.hssf.usermodel.HSSFRow
IMPORT JAVA org.apache.poi.hssf.usermodel.HSSFCell
IMPORT JAVA org.apache.poi.hssf.usermodel.HSSFCellStyle
IMPORT JAVA org.apache.poi.hssf.usermodel.HSSFFont
IMPORT JAVA org.apache.poi.poifs.filesystem.POIFSFileSystem
IMPORT JAVA java.io.InputStream
IMPORT JAVA java.io.FileInputStream
DATABASE ds

GLOBALS "../../config/top.global"

DEFINE fs         POIFSFileSystem
DEFINE wb         HSSFWorkbook 
DEFINE sheet      HSSFSheet
DEFINE row        HSSFRow 
DEFINE is         InputStream

FUNCTION cl_import_czq_excel()
DEFINE l_prostr   LIKE ze_file.ze03  
DEFINE l_fileLocation   STRING 
DEFINE colnum,rowcount     INT
DEFINE i,j          INT 
DEFINE l_str,l_str1      STRING
DEFINE l_tempdir    STRING
DEFINE l_filename   LIKE type_file.chr1000

#选择要导入资料的Excel文件  BEGIN
LET l_prostr = cl_getmsg("lib-201", g_lang)  
WHILE TRUE   
PROMPT l_prostr CLIPPED FOR l_fileLocation ATTRIBUTE(WITHOUT DEFAULTS)  
   ON ACTION browse_document  
      LET l_fileLocation = cl_browse_file()  

   ON ACTION ACCEPT  
      EXIT WHILE  

   ON ACTION CANCEL  
      EXIT WHILE  

   ON IDLE g_idle_seconds  
      CALL cl_on_idle()  
      RETURN  
END PROMPT  
END WHILE 
#选择要导入资料的Excel文件  END 

LET l_tempdir =fgl_getenv("TEMPDIR")  #获取临时文件夹路径
LET l_filename = os.Path.basename(l_fileLocation)  #获取导入文件名
LET l_str = os.Path.join(l_tempdir CLIPPED,l_filename CLIPPED) #拼接成服务器的完整路径
IF NOT cl_upload_file(l_fileLocation,l_str) THEN  #将文件先上传到临时文件夹
      CALL cl_err(NULL, "lib-212", 1)
      RETURN 
END IF 

LET is = FileInputStream.create(l_str)    
LET fs = POIFSFileSystem.create(is)
LET wb = HSSFWorkbook.create(fs)
LET sheet = wb.getSheetAt(0)    #获取EXCEL第一个页签
LET row = sheet.getRow(0)       #获取第一列标题栏
LET colnum = row.getPhysicalNumberOfCells()    #获取列总数

LET rowcount = sheet.getPhysicalNumberOfRows()  #获取总行数
FOR i = 1 TO rowcount - 1   #从第二行开始循环  
  LET row = sheet.getRow(i)
  FOR j = 0 to colnum-1   #已标题栏列数为准

  LET l_str1 = row.getCell(j)    #这里写程序逻辑

  END FOR

END FOR

END FUNCTION

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

四方木2021

您的鼓励是我前进路上的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值