Utilisation des classes POI

BoTTom |
      *
      * Ce pgm utilise les classes du projet POI
      *
      *   ce projet (voir http://jakarta.apache.org/poi/index.html)
      *   permet à partir de classes java de manipuler des fichiers
      *   au format "Microsoft's OLE 2 Compound Document"
      *
      *   cet exemple est très largement insiré de celui founit sur le
      *    site http://www.jasservices.com/articles/as400/001_genexcel.htm
      *   ==> un GRAND merci ! 
      *
      *   il illustre l'utilisation de classes java depuis RPG (JNI)
      *    et écrit dans un fichier excel "cours.xls" (dans IFS)
      *    les cours AF400 (af4mbrl1)
      *
     h dftactgrp(*no)
 
     Faf4mbrl1  if   e             Disk    Prefix(af400_)
     D Count           S              5  0 Inz(0)
     D C               S              5  0 Inz(0)
     D IFSFile         S           1024    Inz('/home/CM/excel/cours.xls')
 
      * OBJECT Variables *******************************************************
      * // String.
     D string          S               O   CLASS(*JAVA
     D                                     :'java.lang.String')
      * // String (contenant le nom du fichier)
     D filename        S               O   CLASS(*JAVA
     D                                     :'java.lang.String')
      * // FileOutputStream.
     D outFile         S               O   CLASS(*JAVA
     D                                     :'java.io.FileOutputStream')
      * // Workbook.(classeur)
     D wb              S               O   CLASS(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFWorkbook')
      * // Sheet.(feuille)
     D s               S               O   CLASS(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFSheet')
      * // Row.(ligne)
     D row             S               O   CLASS(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFRow')


|
      * // Cell.(cellule)
     D cell            S               O   CLASS(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFCell')
 
      * CONSTRUCTOR Methods. ***************************************************
      * // String CONSTRUCTOR
      * // new String(byte b[])
     D createString    PR              O   EXTPROC(*JAVA
     D                                     :'java.lang.String'
     D                                     :*CONSTRUCTOR)
     D                                     CLASS(*JAVA
     D                                     :'java.lang.String')
     D parm                        1024
      * // FileOutputStream CONSTRUCTOR
      * // new FileOutputStream(String file)
     D createFile      PR              O   EXTPROC(*JAVA
     D                                     :'java.io.FileOutputStream'
     D                                     :*CONSTRUCTOR)
     D                                     CLASS(*JAVA
     D                                     :'java.io.FileOutputStream')
 
     D parm                            O   CLASS(*JAVA
     D                                     :'java.lang.String')
      * // WorkBook CONSTRUCTOR
     D createWB        PR              O   EXTPROC(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFWorkbook'
     D                                     :*CONSTRUCTOR)
     D                                     CLASS(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFWorkbook')
      * METHODS ****************************************************************
      * // java.lang.trim()
     D trimString      PR              O   EXTPROC(*JAVA
     D                                     :'java.lang.String'
     D                                     :'trim')
     D                                     CLASS(*JAVA
     D                                     :'java.lang.String')
      * // WorkBook.createSheet()
     D createSheet     PR              O   EXTPROC(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFWorkbook'
     D                                     :'createSheet')


|
     D                                     CLASS(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFSheet')
      * // Sheet.createRow()
     D createRow       PR              O   EXTPROC(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFSheet'
     D                                     :'createRow')
     D                                     CLASS(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFRow')
     D parm                           5I 0 value
      * // Row.createCell()
     D createCell      PR              O   EXTPROC(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFRow'
     D                                     :'createCell')
     D                                     CLASS(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFCell')
     D parm1                          5I 0 value
 
      * // Cell.setCellType(int)
     D setCellType     PR                  EXTPROC(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFCell'
     D                                     :'setCellType')
     D parm1                         10I 0 value
      * // Cell.setCellValue(String)
     D setCellValStr   PR                  EXTPROC(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFCell'
     D                                     :'setCellValue')
     D parm                            O   CLASS(*JAVA
     D                                     :'java.lang.String')
      * // Cell.setCellValue(double)
     D setCellValD     PR                  EXTPROC(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFCell'
     D                                     :'setCellValue')
     D parm                           8F   value
      * // AddRowCellAlf(Row:ValueAlf)
     D*addRowCellAlf   PR
     D* row                            O   CLASS(*JAVA


|
     D*                                    :'org.apache.poi.hssf.usermodel-
     D*                                    .HSSFRow')
     D* parm                       1024    varying
      * // AddRowCellNum(Row:ValueNum)
     D*addRowCellNum   PR
     D* row                            O   CLASS(*JAVA
     D*                                    :'org.apache.poi.hssf.usermodel-
     D*                                    .HSSFRow')
     D* parm                          8F
      * // wb.write(FileOutputStream)
     D writeWB         PR                  EXTPROC(*JAVA
     D                                     :'org.apache.poi.hssf.usermodel-
     D                                     .HSSFWorkbook'
     D                                     :'write')
     D parm                            O   CLASS(*JAVA
     D                                     :'java.io.OutputStream')
 
     D valueAlf        S           1024
     D valueNUM        S              8F
 
 
     ***************************************************************************
      /Free
        Count = 0;
        // Creation du classeur.
        wb = createWB();
        // Create a Worksheet.
        s = createSheet(wb);
 
        // lecture séquentielle des cours.
        Read af4mbrf1;
        Dow not %eof;
           Exsr DBRec2Excel;
           Read af4mbrf1;
        Enddo;
 
        // Creation d'un objet String (nom du fichier).
        filename = createString(IFSFile);
        // élimination des blancs.
        filename = trimString(filename);
        // Creation FileFileOutputStream.
        outFile = createFile(filename);
        // écriture du classeur.
        writeWB(wb:outFile);


|
 
        *inlr = *on;
      /End-Free
 
     ***************************************************************************
      /Free
        Begsr DBRec2Excel;
        // Create a row.
        row = createRow(s:Count);
        c = 0;
        valueNUM = Count + 1;
        exsr zoneNUM;
 
        valueALF = af400_af4mdl;
        exsr zoneALF;
        valueALF = af400_af4mbr;
        exsr zoneALF;
        valueALF = af400_sujet;
        exsr zoneALF;
        valueALF = af400_motcl1;
        exsr zoneALF;
        valueALF = af400_motcl2;
        exsr zoneALF;
        valueALF = af400_motcl3;
        exsr zoneALF;
        valueALF = af400_motcl4;
        exsr zoneALF;
        valueALF = af400_motcl5;
        exsr zoneALF;
        valueNUM = af400_datref;
        exsr zoneNUM;
 
        // Count record number.
        Count  = Count +1;
        Endsr;
      /End-Free
     *********************************************************************************
      /free
       // écriture d'une cellule alphanumérique
       begsr zoneALF ;
        // Create a cell (row:number)
        cell = createCell(row:c);
        // Set Type 0=Numeric/1=String)
        // Create String Cell Value.


|
        setCellType(cell:1);
        // Set cell value.
          string = createString(valueALF);
          string = trimString(String);
          setCellValStr(cell:string);
        c = c+1;
       endsr;
      /end-free
 
     *********************************************************************************
      /free
       // écriture d'une cellule numérique
       begsr zoneNUM ;
        // Create a cell (row:number)
        cell = createCell(row:c);
        // Set Type 0=Numeric/1=String)
        setCellType(cell:0);
        // Set cell value.
        setCellValD(cell:valueNUM);
        c = c+1;
       endsr;
      /end-free




©AF400