* * 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 |