Cet exemple présente quelques fonctions de LAUNCHER Office avec Excel.
Gestion de feuilles
On commence par l'insertion d'une nouvelle feuille par la commande XLADDSHEET puis le changement de son nom par la commande XLSHNAME.
LAUNCHER Office permet aussi de copier ou de supprimer les feuilles du classeur.
Insertion de données
Parmi les nombreuses commandes pour alimenter la feuille, la plus simple et la plus pratique est XLSETLINE qui écrit en une fois toute la ligne.
Le premier paramètre contient les données, séparées par le mot clé %SEP%.
Le second paramètre peut contrôler la mise en forme de chaque cellule.
Nous écrivons donc une première ligne d'entête avec une mise en gras puis deux lignes de valeurs, donc la deuxième est formatée avec 2 décimales par le mot clé NUMFMT(2).
Création d'un graphique
Une fois le tableau rempli la commande XLDRAWGR nous permet de créer le graphique correspondant sur une nouvelle feuille. Dans ce cas un graphique de type "Aires" mais on peut évidemment utiliser tous les types de graphiques disponibles.
Nous modifions ensuite certaines propriétés du graphique ; titre et nom des séries par la commande XLSETPROP.
Une fois les opérations effectuées on peut rendre Excel visible par la commande EXCELSHOW.
Source de l'exemple
PGM
DCL VAR(&SVRADDR) TYPE(*CHAR) LEN(30)
/* DECLARATION OF VARIABLES NEEDED FOR A CONNECTION TO THE SERVER */
DCL VAR(&HANDLE) TYPE(*CHAR) LEN(50)
DCL VAR(&CCSID) TYPE(*CHAR) LEN(10)
DCL VAR(&CMD) TYPE(*CHAR) LEN(10)
DCL VAR(&OPT) TYPE(*CHAR) LEN(1)
DCL VAR(&PARM1) TYPE(*CHAR) LEN(512)
DCL VAR(&PARM2) TYPE(*CHAR) LEN(1024)
DCL VAR(&RESULT) TYPE(*CHAR) LEN(512)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSG1) TYPE(*CHAR) LEN(80)
DCL VAR(&MSG2) TYPE(*CHAR) LEN(80)
CHGVAR VAR(&SVRADDR) VALUE('*DEV')
/* OPEN ONLY ONE CONVERSATION WITH THE SERVER */
CHGVAR VAR(&HANDLE) VALUE('*ONLY')
/* TRANSLATE THE CCSID ACCORDING TO THE JOB CCSOD */
CHGVAR VAR(&CCSID) VALUE('*JOB')
/* CONNECTION WITH THE SERVER */
CALL PGM(LNCOPEN) PARM(&HANDLE &SVRADDR &CCSID)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* OPENING EXCEL */
CHGVAR VAR(&CMD) VALUE('EXCELOPEN ')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* ADD A NEW SHEET */
CHGVAR VAR(&CMD) VALUE('XLADDSHEET ')
CHGVAR VAR(&PARM1) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* RENAME THE SHEET */
CHGVAR VAR(&CMD) VALUE('XLSHNAME ')
CHGVAR VAR(&PARM1) VALUE('VENTES 1ER TRIMESTRE')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* INSERT FIRST LINE WITH HEADERS */
CHGVAR VAR(&CMD) VALUE('XLSETLINE ')
CHGVAR VAR(&PARM1) VALUE('JANVIER%SEP%FEVRIER%SEP%MARS')
CHGVAR VAR(&PARM2) VALUE('PROP(FONT.BOLD)=
PROP(FONT.BOLD)=
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* FIRST DATA LINE */
CHGVAR VAR(&CMD) VALUE('XLSETLINE ')
CHGVAR VAR(&PARM1) VALUE('000123%SEP%22250%SEP%301')
CHGVAR VAR(&PARM2) VALUE('FORMAT()%SEP%NUMFMT(2)')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* SECOND DATA LINE */
CHGVAR VAR(&PARM1) VALUE('223%SEP%23250%SEP%285')
CHGVAR VAR(&PARM2) VALUE('FORMAT()%SEP%NUMFMT(2)')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* INSERT THE GRAPHIC */
CHGVAR VAR(&CMD) VALUE('XLDRAWGR ')
CHGVAR VAR(&PARM1) VALUE('A1:C3')
CHGVAR VAR(&PARM2) VALUE('''AREA'' ''ROWS'' ''1'' ''0'' ''+
MARKET'' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* CHANGING THE GRAPHS TITLE */
CHGVAR VAR(&CMD) VALUE('XLSETPROP')
CHGVAR VAR(&PARM1) VALUE('ACTIVECHART.CHARTTITLE.CHARACTERS.+
TEXT')
CHGVAR VAR(&PARM2) VALUE('VENTES TRIMESTRE 1')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* CHANGE FIRST SERIE NAME */
CHGVAR VAR(&CMD) VALUE('XLSETPROP')
CHGVAR VAR(&PARM1) VALUE('ACTIVECHART.SERIESCOLLECTION(1)+
.NAME')
CHGVAR VAR(&PARM2) VALUE('PRODUIT A')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* SECOND SERIE */
CHGVAR VAR(&CMD) VALUE('XLSETPROP')
CHGVAR VAR(&PARM1) VALUE('ACTIVECHART.SERIESCOLLECTION(2)+
.NAME')
CHGVAR VAR(&PARM2) VALUE('PRODUIT B')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* MAKE EXCEL VISIBLE */
CHGVAR VAR(&CMD) VALUE('EXCELSHOW ')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* END */
CHGVAR VAR(&CMD) VALUE('END ')
CHGVAR VAR(&PARM1) VALUE(' ')
CHGVAR VAR(&PARM2) VALUE(' ')
CALL PGM(LNCCMD) PARM(&HANDLE &CMD &OPT +
&PARM1 &PARM2 &RESULT)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
/* END OF COMMUNICATION...*/
CALL PGM(LNCCLOSE) PARM(&HANDLE)
MONMSG MSGID(LNC0000) EXEC(GOTO CMDLBL(ERROR))
GOTO END
ERROR:
RCVMSG MSG(&MSG1) SECLVL(&MSG2) MSGID(&MSGID)
SNDPGMMSG MSGID(CPF9898) MSGF(QSYS/QCPFMSG) +
MSGDTA('ERROR !!!!! ' *CAT &MSGID *CAT ' +
' *CAT &MSG1 *CAT ' ' *CAT &MSG2) +
MSGTYPE(*ESCAPE)
END:
ENDPGM