Gérer des fichiers Excel xls et xlsx
mer 15 mai 2019XLPARSE4 est un programme de service mis à disposition par Scott Klement qui permet à des procédures RPG ILE de lire des fichiers Excel aux formats XLS et XLSX en s’appuyant sur les classes Java d’Apache POI, issues du projet Jakarta.
Présentation
Une fois les classes Java nécessaires installées sur IBM i, les procédures fournies par Scott Klement offrent une interface simple pour manipuler des fichiers Excel depuis des programmes RPG ILE.
L’idée est de déléguer la lecture du format Excel aux classes Java POI, tout en restant côté RPG pour la logique métier.
Obtenir les JAR de POI
- Obtenir et installer les JAR Apache POI
- Télécharger 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.
- Ajouter le chemin 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 utiliser XLPARSE4, il faut disposer au minimum des éléments suivants :
- IBM i en version V5R3 ou supérieure.
- Licence du compilateur ILE RPG IV (57xxWDS).
- IBM Developer Kit for Java (57xxJV1), *BASE.
- System Openness Includes (bibliothèque QSYSINC, licence 57xxSS1).
- Les sources de XLPARSE4 téléchargées sur le site de Scott Klement (archive XlParse3.x).
Installation
- Installation de XLPARSE4
- Extraire l’archive
XlParse3.6dans un répertoire de travail. - Exécuter sous Windows le script
ftpsrc.batpour transférer les sources sur IBM i :
ftpsrc.bat SERVEUR BIBLIO PROFIL MOT_DE_PASSELes objets source seront alors copiés dans la bibliothèque indiquée.
Objets Java fournis
Les éléments principaux se trouvent dans l’IFS :
| Outils | Fichier JAR | Chemin IFS | HSSF | XSSF | Description |
| XlParse 3.6 | xlparse.jar | /java/xlparse3.6 | X | X | Partie JAVA développer par Scott Klement |
4. créer le programme d’installation BUILDXLP
5. exécution du programme d’installation CALL BUILDXLP.
CHGLIBL LIBL(QGPL QTEMP) CURLIB(<<BUILD où se trouve BUILDXLP>>)
CRTCLPGM BUILDXLP SRCFILE(QCLSRC)6. JAR POI à déclarer dans le CLASSPATH
Voici les principaux JAR POI à inclure, avec leurs emplacements types :
| Outils | Fichier JAR | Chemin IFS | HSSF | XSSF | Description |
| poi‑4.1.0.jar | /java/xlparse3.6/POI‑4.1.0 | X | X | Apache POI – Java API To Access Microsoft Format Files | |
| poi-ooxml‑4.1.0.jar | /java/xlparse3.6/POI‑4.1.0 | X | Additional POI code for XSSF | ||
| poi-ooxml-schemas‑4.1.0.jar | /java/xlparse3.6/POI‑4.1.0 | X | Schemas 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 | X | JAXB 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-lib | Implementation of various mathematical curves that define themselves over a set of control points. The API is written in Java. The curves supported are : Bezier, B‑Spline, Cardinal Spline, Catmull-Rom Spline, Lagrange, Natural Cubic Spline, and NURBS. | |||
| xmlbeans‑3.1.0.jar | /java/xlparse3.6/poi‑4.1.0/ooxml-lib | X | XmlBeans 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 ajouter les JAR au CLASSPATH, vous pouvez faire comme dans les préconisations de Scott Klement, utiliser un CLLE qui changement le CLASSPATH comme ci-dessous :
Test avec le programme XLPDEMO
Pour vérifier l’installation, vous pouvez utiliser le programme de démonstration fourni, XLPDEMO :
CALL PGM(XLPDEMO) PARM('1').XLPDEMO ouvre un fichier Excel et utilise la sous‑procédure xlparse_workbook.
Cette sous‑procédure parcourt chaque cellule du classeur dont le chemin est passé en paramètre, et appelle :
charcelllorsque la valeur de la cellule est alphanumérique.numbercelllorsque la valeur est numérique.
Vous pouvez ainsi adapter ces sous‑procédures pour intégrer directement les données Excel dans vos fichiers RPG ou tables SQL sur IBM i.

