Gérer des fichiers Excel xls et xlsx

Gérer des fichiers Excel xls et xlsx

mer 15 mai 2019 0 Par Ibmiiste

XLPARSE4 est un pro­gramme de ser­vice mis à dis­po­si­tion par Scott Kle­ment qui per­met de lire des fichiers Excel Xls et Xlsx à par­tir de pro­cé­dures Rpg ile. Cet uti­li­taire fait appel à des classes JAVA du pro­jet Jakar­ta : Apache POI

Pré­sen­ta­tion

A par­tir du moment où vous avez ins­tal­lé les classes JAVA néces­saires, les pro­cé­dures de Scott Kle­ment per­mettent à des pro­grammes Rpg ile de les appe­ler de façon simple.

Obte­nir les JAR de POI

  • Aller sur le site de POI Apache et télé­char­ger le zip poi-bin‑x.x‑AAAAMMJJ.zip,
  • Extraire les fichiers JAR sur l’IFS, 
  • Ajou­ter le che­min des JAR files à la variables d’en­vi­ron­ne­ment CLASSPATH
ADDENVVAR ENVVAR(CLASSPATH)
VALUE('...chemin IFS vers les JAR...')

Pré-requis

  • au moins être en ver­sion V5R3,
  • avoir la licence du com­pi­la­teur ILE RPG IV licence 57xxWDS , 
  • IBM Deve­lo­per Kit for Java, licence 57xxJV1, *base,
  • Sys­tem Open­ness Includes (libra­ry QSYSINC) licence 57xx-SS1,
  • télé­char­ger sur le site de Scott Kle­ment les fichier XLPARSER4,

Ins­tal­la­tion

  1. Extraire le zip XlParse36_1,
  2. on exe­cute en dos le .bat : ftpsrc.bat SERVEUR BIBLIO PROFIL MOT_DE_PASSE,
  3. les objets se trou­ve­ront à ces emplacements 
OutilsFichier JARChe­min IFSHSSFXSSFDes­crip­tion

XlParse 3.6
xlparse.jar/java/xlparse3.6XXPar­tie JAVA déve­lop­per par Scott Klement

4. créer le pro­gramme d’ins­tal­la­tion BUILDXLP 

5. exé­cu­tion du pro­gramme d’ins­tal­la­tion CALL BUILDXLP.

 CHGLIBL  LIBL(QGPL QTEMP) CURLIB(<<BUILD où se trouve BUILDXLP>>)
 CRTCLPGM BUILDXLP SRCFILE(QCLSRC)

6. Empla­ce­ments des JAR en rap­port avec le CLASSPATH (voir plus bas)

OutilsFichier JARChe­min IFSHSSFXSSFDes­crip­tion
poi‑4.1.0.jar/java/xlparse3.6/POI‑4.1.0XXApache POI – Java API To Access Micro­soft For­mat Files
poi-ooxml‑4.1.0.jar/java/xlparse3.6/POI‑4.1.0XAddi­tio­nal POI code for XSSF
poi-ooxml-schemas‑4.1.0.jar/java/xlparse3.6/POI‑4.1.0 XSche­mas for XSSF code
activation‑1.1.1.jar/java/xlparse3.6/POI‑4.1.0/lib
commons-codec‑1.12.jar/java/xlparse3.6/POI‑4.1.0/lib
commons-collections4‑4.3.jar/java/xlparse3.6/POI‑4.1.0/lib
commons-compress‑1.18.jar/java/xlparse3.6/POI‑4.1.0/lib
commons-logging‑1.2.jar /java/xlparse3.6/POI‑4.1.0/lib
commons-math‑3.6.1.jar/java/xlparse3.6/POI‑4.1.0/lib
jaxb-api‑2.3.0.jar/java/xlparse3.6/POI‑4.1.0/lib XJAXB API
jaxb-core‑2.3.0.1.jar/java/xlparse3.6/POI‑4.1.0/lib X
jaxb-impl‑2.3.0.1.jar/java/xlparse3.6/POI‑4.1.0/lib X
junit‑4.12.jar/java/xlparse3.6/POI‑4.1.0/lib
log4j‑1.2.17.jar /java/xlparse3.6/POI‑4.1.0/lib
curvesapi‑1.06.jar/java/xlparse3.6/poi‑4.1.0/ooxml-libImple­men­ta­tion of various mathe­ma­ti­cal curves that define them­selves over a set of control points. The API is writ­ten in Java. The curves sup­por­ted are : Bezier, B‑Spline, Car­di­nal Spline, Cat­mull-Rom Spline, Lagrange, Natu­ral Cubic Spline, and NURBS.
xmlbeans‑3.1.0.jar/java/xlparse3.6/poi‑4.1.0/ooxml-libXXml­Beans main jar
poi-examples‑4.1.0.jar/java/xlparse3.6/poi‑4.1.0
poi-excelant‑4.1.0.jar/java/xlparse3.6/poi‑4.1.0
poi-scratchpad‑4.1.0.jar/java/xlparse3.6/poi‑4.1.0

Pour ajou­ter les JAR au CLASSPATH, vous pou­vez faire comme dans les pré­co­ni­sa­tions de Scott Kle­ment, uti­li­ser un CLLE qui chan­ge­ment le CLASSPATH comme ci-dessous :

             PGM


             ADDLIBLE   XLPARSE36 *LAST
             MONMSG     CPF2103

             ADDENVVAR  ENVVAR(CLASSPATH) +
                          VALUE('/java/xlparse3.6/xlparse.jar +
                                 :/java/xlparse3.6/POI-4.1.0/poi-4.1.0.jar +
                                 :/java/xlparse3.6/POI-4.1.0/poi-ooxml-4.1.0.jar +
                                 :/java/xlparse3.6/POI-4.1.0/poi-ooxml-schemas-4.1.0.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/activation-1.1.1.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/commons-codec-1.12.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/commons-collections4-4.3.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/commons-compress-1.18.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/commons-logging-1.2.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/commons-math-3.6.1.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/jaxb-api-2.3.0.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/jaxb-core-2.3.0.1.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/jaxb-impl-2.3.0.1.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/junit-4.12.jar +
                                 :/java/xlparse3.6/poi-4.1.0/lib/log4j-1.2.17.jar +
                                 :/java/xlparse3.6/poi-4.1.0/ooxml-lib/curvesapi-1.06.jar +
                                 :/java/xlparse3.6/poi-4.1.0/ooxml-lib/xmlbeans-3.1.0.jar +
                                 :/java/xlparse3.6/poi-4.1.0/poi-examples-4.1.0.jar +
                                 :/java/xlparse3.6/poi-4.1.0/poi-excelant-4.1.0.jar +
                                 :/java/xlparse3.6/poi-4.1.0/poi-scratchpad-4.1.0.jar') LEVEL(*JOB) +
                          REPLACE(*YES)


             ENDPGM

Main­te­nant, il faut tester

Pour tes­ter, lan­cer la com­made CALL PGM(XLPDEMO) PARM(‘1’).

XLPDEMO est une édi­tion du fichier Excel. Ce pro­gramme uti­lise la sous-pro­cé­dure xlparse_workbook. 

Celle-ci va lire chaque cel­lule du fichier Excel dont le che­min est trans­mis et appli­quer la sous-pro­cé­dure char­cell sur la valeur si celle-ci est alpha­nu­mé­rique et num­ber­cell si elle est numérique.