[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    904

    Excel mit ACS in Batch erstellen

    Nachdem ich hier im Forum manchmal durch Motz oder Unwissenheit aufgefallen bin, möchte ich auch etwas zurückgeben. Öfters wird nach dem Transfer in Excel gefragt und meistens als Antwort auf das schnöde CSV verwiesen. Dabei lassen sich via ACS auch in Batch Excel Dateien erstellen, nicht schnell aber immerhin und für lau.

    Hier der Code als CLLE:

    Code:
                  /* Batch Excel Transfer mit ACS                        */
                  /* ---------------------------------------- mylogic.io */
                 PGM        PARM(&LIB &FILE &XLSFILE)
    
    
                 DCL        VAR(&LIB) TYPE(*CHAR) LEN(10)
                 DCL        VAR(&FILE) TYPE(*CHAR) LEN(10)
                 DCL        VAR(&XLSFILE) TYPE(*CHAR) LEN(30)
                 DCL        VAR(&SYSNAME) TYPE(*CHAR) LEN(8)
                 DCL        VAR(&JAVA) TYPE(*CHAR) LEN(1500)
    
    
                 DCL        VAR(&HOME) TYPE(*CHAR) LEN(50) +
                              VALUE('/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit')
                 DCL        VAR(&JARNAME) TYPE(*CHAR) LEN(50) +
                              VALUE('/QIBM/ProdData/Access/ACS/Base/acsbundle.jar')
    
    
                  /* Check Parameters                                    */
                 IF         COND((&LIB *EQ ' ') *OR (&FILE *EQ ' ') *OR +
                              (&XLSFILE *EQ ' ')) THEN(RETURN)
    
    
                  /* Get System Name                                     */
                 RTVNETA    SYSNAME(&SYSNAME)
    
    
                  /* Set Environment                                     */
                 ADDENVVAR  ENVVAR(JAVA_HOME) VALUE(&HOME) LEVEL(*SYS) +
                              REPLACE(*YES)
                 MONMSG     MSGID(CPF0000)
                  /* Set no Messages                                     */
                 ADDENVVAR  ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE(NONE) +
                              LEVEL(*JOB) REPLACE(*YES)
                 MONMSG     MSGID(CPF0000)
    
    
                  /* Create Java String                                  */
                 CHGVAR     VAR(&JAVA) VALUE('java +
                              -Dcom.ibm.iaccess.ActLikeExternal=true -jar')
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *bcat &JARNAME)
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *bcat +
                              '/plugin=cldownload /system=')
                  /* add Systemname                                      */
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *tcat &SYSNAME)
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *bcat '/clientfile=')
                  /* add XLS Filename (/Pfad/File.xlsx)                  */
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *tcat &XLSFILE)
                  /* SQL String                                          */
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *bcat '/sql="select * +
                              from')
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *BCAT &LIB *TCAT '/' +
                              *CAT &FILE)
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *tcat '"')
                  /* Header Columns 0=keine, 1=Feldnamen                */
                  /* CHGVAR     VAR(&JAVA) VALUE(&JAVA *bcat '/colheadings=0')  */
                  /* Header Columns Bezeichnung                         */
                 CHGVAR     VAR(&JAVA) VALUE(&JAVA *bcat '/usecollabels')
    
    
                  /* Java Call                                           */
                 QSH        CMD(&JAVA)
                 RMVENVVAR  ENVVAR(JAVA_HOME)
                 MONMSG     MSGID(CPF0000)
    
    
                 ENDPGM
    kf

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Was mir am Excel-Output des ACS nur aufgefallen ist, dass Zahlen als String in Excel abgelegt werden.
    Im Excel muss man dann immer noch die Zellen als Zahl umrechnen lassen.
    Dies geht dann per Klick auf das rote Dreieck einer Zelle bzw. eines markierten Bereichs.
    Wobei Excel bei NULL-Werten, also leeren Zellen, dann wieder streikt.

    Dies ist unabhängig von der Dezimaleinstellung (Punkt, Komma) der Java-Connection.
    Hast du da auch eine Lösung für?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    904
    Hallo Baldur,
    Ist mir nicht aufgefallen. Die Zahlen in Excel werden korrekt dargestellt.
    Abgesehen davon, kannst Du ja im CL auch einen SQL-String zusammenbasteln, bis du lustig bist.
    kf

Similar Threads

  1. WRKMLBSTS als Batch
    By Chris.jan in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 26-06-19, 12:26
  2. Antworten: 7
    Letzter Beitrag: 03-07-18, 13:55
  3. Excel-Dateien innerhalb von OS/400 erstellen
    By Klaus in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 20-04-02, 19:37
  4. FTP Batch
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 19-10-01, 15:06
  5. Von Excel aus Query starten und erstellen
    By smallutz in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 09-03-01, 09:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •