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 à des pro­cé­dures RPG ILE de lire des fichiers Excel aux for­mats XLS et XLSX en s’appuyant sur les classes Java d’Apache POI, issues du pro­jet Jakarta.

Pré­sen­ta­tion

Une fois les classes Java néces­saires ins­tal­lées sur IBM i, les pro­cé­dures four­nies par Scott Kle­ment offrent une inter­face simple pour mani­pu­ler des fichiers Excel depuis des pro­grammes RPG ILE.
L’idée est de délé­guer la lec­ture du for­mat Excel aux classes Java POI, tout en res­tant côté RPG pour la logique métier.

Obte­nir les JAR de POI

  • Obte­nir et ins­tal­ler les JAR Apache POI
  • Télé­char­ger l’archive POI sur le site Apache POI (fichier du type poi-bin-x.x-AAAAMMJJ.zip).
  • Extraire l’archive dans l’IFS à l’emplacement de votre choix.
  • Ajou­ter le che­min des fichiers JAR à la variable d’environnement CLASSPATH, par exemple :
ADDENVVAR ENVVAR(CLASSPATH) +
         VALUE('/java/xlparse3.6/POI-4.1.0:+
                /java/xlparse3.6/POI-4.1.0/lib:+
                /java/xlparse3.6/POI-4.1.0/ooxml-lib')

Pré-requis

  • Pour uti­li­ser XLPARSE4, il faut dis­po­ser au mini­mum des élé­ments suivants :
  • IBM i en ver­sion V5R3 ou supérieure.
  • Licence du com­pi­la­teur ILE RPG IV (57xxWDS).
  • IBM Deve­lo­per Kit for Java (57xxJV1), *BASE.
  • Sys­tem Open­ness Includes (biblio­thèque QSYSINC, licence 57xxSS1).
  • Les sources de XLPARSE4 télé­char­gées sur le site de Scott Kle­ment (archive XlParse3.x).

Ins­tal­la­tion

  1. Ins­tal­la­tion de XLPARSE4
  2. Extraire l’archive XlParse3.6 dans un réper­toire de travail.
  3. Exé­cu­ter sous Win­dows le script ftpsrc.bat pour trans­fé­rer les sources sur IBM i :
ftpsrc.bat SERVEUR BIBLIO PROFIL MOT_DE_PASSE

Les objets source seront alors copiés dans la biblio­thèque indiquée.

Objets Java fournis

Les élé­ments prin­ci­paux se trouvent dans l’IFS :

    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. JAR POI à décla­rer dans le CLASSPATH

    Voi­ci les prin­ci­paux JAR POI à inclure, avec leurs empla­ce­ments types :

    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

    Test avec le pro­gramme XLPDEMO

    Pour véri­fier l’installation, vous pou­vez uti­li­ser le pro­gramme de démons­tra­tion four­ni, XLPDEMO :

    CALL PGM(XLPDEMO) PARM('1').

    XLPDEMO ouvre un fichier Excel et uti­lise la sous‑procédure xlparse_workbook.
    Cette sous‑procédure par­court chaque cel­lule du clas­seur dont le che­min est pas­sé en para­mètre, et appelle :

    • charcell lorsque la valeur de la cel­lule est alphanumérique.
    • numbercell lorsque la valeur est numérique.

    Vous pou­vez ain­si adap­ter ces sous‑procédures pour inté­grer direc­te­ment les don­nées Excel dans vos fichiers RPG ou tables SQL sur IBM i.