[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Thema: Libxlsxwriter

  1. #1
    Registriert seit
    Feb 2017
    Beiträge
    41

    Libxlsxwriter

    Hallo,

    hat hier jemand im Forum schon einmal mit der für die IBM i portierten Bibliothek Libxlsxwriter gearbeitet (http://blog.rpgnextgen.com/blog/2018...ets-natively)?
    Versuche mich da gerade durch die Installation zu kämpfen und bekomme schon beim bauen von ZLIB die ersten Fehlermeldungen... Nutzt einer von euch das Tool schon auf seiner i? Wie sind die Erfahrungen?

    Gruß,
    Manuel

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Da würde ich mich vertrauensvoll an den Autor wenden.
    Hast du die Voraussetzung bzgl. ZLIB erfüllt?

    Wenn es um Excel geht nehme ich eher den umgekehrten Weg:
    Excel->externe Daten->MS-Query
    Damit kann ich per SQL alle Daten der AS/400 auslesen ohne irgendwas zu programmieren.

    Umgekehrt wird es zugegeben etwas schwieriger, da IBM's AddIn nicht mehr weiterentwickelt wurde.
    5250-Filetransfer geht da u.U. auch noch.
    Es gibt da natürlich diverse andere kostenpflichtige Tools neben meinem Excel-Addin (stabil seit Excel 97 bis Excel 2016), dass auf die AS/400 spezialisiert ist.
    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
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Hilft Dir evtl. schon das Tool SQL2XLSX?

    https://www.mcpressonline.com/progra...he-starter-kit

    Oder muss es wirklich der Libxlsxwriter sein?

    Gruß,
    KM

  4. #4
    Registriert seit
    Feb 2017
    Beiträge
    41
    @Fuerchau:
    Vorraussetzungen sind erfüllt. Es gab sogar Anweisung für das Erstellen unte IBM i. Bin mir nur nicht sicher ob Quelldateien noch evtl. eine andere CCSID benötigen, beim Libxlsxwriter gab es einen enstprechenden Tipp wegen CCSIDs.

    @KM:
    Das Tool hatte ich auch schon gesehen. Fand den Ansatz über den Libxlsxwriter aber ganz interessant, da ich dort ja wirklich eine Excel Arbeitsmappe bauen kann und nicht "nur" den Inhalt einer Abfrage nach Excel pusten kann.

    Gruß,
    Manuel

  5. #5
    Registriert seit
    May 2007
    Beiträge
    295
    Wenn du R730 hast dann kannst dir das SAVF hier runter laden:
    https://bitbucket.org/m1hael/libxlsxwriter/downloads/

    Ich hab R720 daher leider nix gut :-D
    Aber vielleicht schafft es ja jemand das Tool auf R720 runter zu brechen. Ich schaffs leider nicht da es einige C-Prozeduren wie "__builtin_snprintf" oder "lxw_chartsheet_assemble_xml_file" auf meinem System nicht gibt.
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  6. #6
    Registriert seit
    Aug 2014
    Beiträge
    179
    Ich habe es unter 7.2 hinbekommen und musste dazu die makefile.ibm etwas modifizieren

    Anbei ein Programm, dass folgende Excel-Tabelle erstellt

    Click image for larger version. 

Name:	capture20181213093005989.png 
Views:	16 
Size:	26,6 KB 
ID:	497

    Code:
             ctl-opt main(main) dftactgrp(*no) alloc(*teraspace)                                                            
                     actgrp('CRTEXCEL') bnddir('LIBXLSX');                                                                  
          //------------------------------------------------------------------//                                            
          //                                                                  //                                            
          // Create Excel-Sheet                                               //                                            
          //                                                                  //                                            
          //-----------------                                                 //                                            
          // R.Ross 03.2018 *                                                 //                                            
          //------------------------------------------------------------------//                                            
          // Prototypes                                                       //                                            
          //------------------------------------------------------------------//                                            
                                                                                                                            
          /include libxlsx/qcpysrc,xlsxwriter                                                                               
                                                                                                                            
          //------------------------------------------------------------------//                                            
          // Main                                                             //                                            
          //------------------------------------------------------------------//                                            
             dcl-proc main;                                                                                                 
                                                                                                                            
             dcl-s   workbook    pointer;                                                                                   
             dcl-s   worksheet   pointer;                                                                                   
             dcl-s   format01    pointer;                                                                                   
             dcl-s   format02    pointer;                                                                                   
             dcl-s   bold        pointer;                                                                                   
                                                                                                                            
               workbook  = workbook_new('/tmp/xlsx/formula.xlsx');                                                          
               worksheet = workbook_add_worksheet(workbook:'Testsheet 1');                                                  
                                                                                                                            
               format01  = workbook_add_format(workbook);                                                                   
               format_set_num_format(format01:'#,##0.00');                                                                  
               format02  = workbook_add_format(workbook);                                                                   
               format_set_num_format(format02:'#,##0.00');                                                                  
               format_set_bold(format02);                                                                                   
                                                                                                                            
               bold      = workbook_add_format(workbook);                                                                   
               format_set_bold(bold);                                                                                       
                                                                                                                            
               worksheet_write_string(worksheet:0:0:'Monat':*null);                                                         
               worksheet_write_string(worksheet:0:1:'Umsatz':*null);                                                        
                                                                                                                            
               worksheet_write_string(worksheet:1:0:'Januar':*null);                                                        
               worksheet_write_string(worksheet:2:0:'Februar':*null);                                                       
               worksheet_write_string(worksheet:3:0:'März':*null);                                                          
               worksheet_write_string(worksheet:4:0:'April':*null);                                                         
               worksheet_write_string(worksheet:5:0:'Mai':*null);                                                           
                                                                                                                            
               worksheet_write_number(worksheet:1:1:6250:format01);                                                         
               worksheet_write_number(worksheet:2:1:3580:format01);                                                         
               worksheet_write_number(worksheet:3:1:780:format01);                                                          
               worksheet_write_number(worksheet:4:1:43580:format01);                                                        
               worksheet_write_number(worksheet:5:1:22890:format01);                                                        
                                                                                                                            
               worksheet_write_string(worksheet:6:0:'Summe':bold);                                                          
                                                                                                                            
               worksheet_write_formula(worksheet:6:1:'=SUM(B2:B6)':format02);                                               
                                                                                                                            
               workbook_close(workbook);                                                                                    
                                                                                                                            
             end-proc;                                                                                                      
          //------------------------------------------------------------------//

  7. #7
    Registriert seit
    May 2007
    Beiträge
    295
    Zitat Zitat von Rainer Ross Beitrag anzeigen
    Ich habe es unter 7.2 hinbekommen und musste dazu die makefile.ibm etwas modifizieren
    Hallo. Rein interessenshalber wäre es spannend zu wissen was geändert werden musste?

    Danke und Greets
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  8. #8
    Registriert seit
    Aug 2014
    Beiträge
    179
    Hallo. Rein interessenshalber wäre es spannend zu wissen was geändert werden musste?
    - In die makefile.ibm die ccsid eingefügt

    CCFLAGS=OUTPUT(*PRINT) OPTIMIZE(10) DBGVIEW(*SOURCE) TGTCCSID(1141) ENUM(*INT) TERASPACE(*YES) STGMDL(*INHERIT) DEFINE(USE_STANDARD_TMPFILE USE_BIG_ENDIAN LXW_HAS_SNPRINTF) SYSIFCOPT(*IFS64IO) INCDIR('../include' '$(ZLIB_INC)' '../third_party/minizip')

    - Die Exports aus der exports.bnd in die LIBXLSX/QSRVSRC(EXPORTS BND) eingefügt
    - Das CRTSRVPGM mit der neuen EXPORTS geändert

    CRTSRVPGM SRVPGM(LIBXLSX/LIBXLSX) MODULE(LIBXLSX/*ALL) STGMDL(*INHERIT) EXPORT(*SRCFILE) SRCFILE($(BIN_LIB)/QSRVSRC) SRCMBR(EXPORTS) TEXT('libxlsxwriter : creating Excel files natively') BNDSRVPGM(ZLIB/ZLIB)

    Hier die neue makefile.ibm

    Code:
    #
    # Build script for libxlsxwriter
    #
    
    #The library can be installed by entering QShell (qsh) and using the Makefile.ibm script like this
    
    #cd /home/projects/libxlsxwriter/src
    #make -f Makefile.ibm
    
    #-----------------------------------------------------------
    # User-defined part start
    #
    
    # BIN_LIB is the destination library for the service program.
    # the rpg modules and the binder source file are also created in BIN_LIB.
    # binder source file and rpg module can be remove with the clean step (make clean)
    BIN_LIB=LIBXLSX
    
    # to this folder the header files (prototypes) are copied in the install step
    INCLUDE=/home/projects/libxlsxwriter/include
    
    # this folder should include the C header files from the zlib project
    ZLIB_INC=/zlib/include
    
    # CCFLAGS = C compiler parameter
    CCFLAGS=OUTPUT(*PRINT) OPTIMIZE(10) DBGVIEW(*SOURCE) TGTCCSID(1141) ENUM(*INT) TERASPACE(*YES) STGMDL(*INHERIT) DEFINE(USE_STANDARD_TMPFILE USE_BIG_ENDIAN LXW_HAS_SNPRINTF) SYSIFCOPT(*IFS64IO) INCDIR('../include' '$(ZLIB_INC)' '../third_party/minizip')
    
    
    #
    # User-defined part end
    #-----------------------------------------------------------
     
     
    .SUFFIXES: .rpgle .c .cpp
     
    # suffix rules
    .rpgle:
        system "CRTRPGMOD $(BIN_LIB)/$@ SRCSTMF('$<') $(RCFLAGS)"
    .c:
        system "CRTCMOD MODULE($(BIN_LIB)/$@ SRCSTMF('$<' $(CCFLAGS)
                   
    all: clean compile bind install
    
    compile: thirdparty
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXAPP) SRCSTMF('app.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXCHART) SRCSTMF('chart.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXCONTNT) SRCSTMF('content_types.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXCORE) SRCSTMF('core.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXCUSTOM) SRCSTMF('custom.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXDRAW) SRCSTMF('drawing.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXFORMAT) SRCSTMF('format.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXHASH) SRCSTMF('hash_table.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXPACKAG) SRCSTMF('packager.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXRELATI) SRCSTMF('relationships.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXSTRING) SRCSTMF('shared_strings.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXSTYLES) SRCSTMF('styles.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXTHEME) SRCSTMF('theme.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXUTIL) SRCSTMF('utility.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXWBOOK) SRCSTMF('workbook.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXWSHEET) SRCSTMF('worksheet.c') $(CCFLAGS)"
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXWRITER) SRCSTMF('xmlwriter.c') $(CCFLAGS)"
    
    thirdparty:
        system "CRTCMOD MODULE($(BIN_LIB)/IOAPI) SRCSTMF('../third_party/minizip/ioapi.c') $(CCFLAGS)"        
        system "CRTCMOD MODULE($(BIN_LIB)/ZIP) SRCSTMF('../third_party/minizip/zip.c') $(CCFLAGS)"
    
    bind:
        system -kpieb "CRTSRVPGM SRVPGM(LIBXLSX/LIBXLSX) MODULE(LIBXLSX/*ALL) STGMDL(*INHERIT) SRCFILE($(BIN_LIB)/QSRVSRC) SRCMBR(EXPORTS) BNDSRVPGM(ZLIB/ZLIB) TEXT('libxlsxwriter : creating Excel files natively')"
    
    util:
        system -kpieb "CRTCMOD MODULE($(BIN_LIB)/XLSXUTIL) SRCSTMF('utility.c') $(CCFLAGS)"
    
    packager:
        system "CRTCMOD MODULE($(BIN_LIB)/XLSXPACKAG) SRCSTMF('packager.c') $(CCFLAGS)"
    
    
    install:
    
    clean:
        -system "DLTMOD $(BIN_LIB)/XLSXAPP"
        -system "DLTMOD $(BIN_LIB)/XLSXCHART"
        -system "DLTMOD $(BIN_LIB)/XLSXCONTNT"
        -system "DLTMOD $(BIN_LIB)/XLSXCORE"
        -system "DLTMOD $(BIN_LIB)/XLSXCUSTOM"
        -system "DLTMOD $(BIN_LIB)/XLSXDRAW"
        -system "DLTMOD $(BIN_LIB)/XLSXFORMAT"
        -system "DLTMOD $(BIN_LIB)/XLSXHASH"
        -system "DLTMOD $(BIN_LIB)/XLSXPACKAG"
        -system "DLTMOD $(BIN_LIB)/XLSXRELATI"
        -system "DLTMOD $(BIN_LIB)/XLSXSTRING"
        -system "DLTMOD $(BIN_LIB)/XLSXSTYLES"
        -system "DLTMOD $(BIN_LIB)/XLSXTHEME"
        -system "DLTMOD $(BIN_LIB)/XLSXUTIL"
        -system "DLTMOD $(BIN_LIB)/XLSXWBOOK"
        -system "DLTMOD $(BIN_LIB)/XLSXWSHEET"
        -system "DLTMOD $(BIN_LIB)/XLSXWRITER"
        -system "DLTMOD $(BIN_LIB)/IOAPI"
        -system "DLTMOD $(BIN_LIB)/ZIP"
    
    dist-clean: clean
        -system "DLTSRVPGM $(BIN_LIB)/LIBXLSX"
           
    .PHONY:

  9. #9
    Registriert seit
    May 2007
    Beiträge
    295
    Vielen Dank.
    Da kommt man vom 100sten ins 1000ste ...
    Mir fehlt auch noch das ZLIB. Jetzt gehts los :-D
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  10. #10
    Registriert seit
    Aug 2014
    Beiträge
    179
    Hallo,

    ich habe zwei Savefiles für die LIBXLSX und ZLIB für 7.2 zum Download erstellt
    https://bitbucket.org/Rainer_Ross/li...ter/downloads/

    Viele Grüße
    Rainer

  11. #11
    Registriert seit
    Sep 2005
    Beiträge
    385
    OffTopic ..

    ganz ehrlich ... Toll was so alles geht!

    Aber wenn ich bedenke welcher optische Aufwand in den Excel Ausgaben für unsere 'Chefs' betrieben wird, währe es für mich der Horror das mit diesem, sicherlich tollen, Tool zu machen.

    bei uns macht 'Irgendwer' das Excel so fertig, wie es werden soll und wir laden die Daten wie von Fuerchau beschrieben oder verwenden ein Tool (haben wir von Meinikat gekauft)
    und exportieren unsere Daten programmiert mit select * from ...where ...
    Egal ob einzelnde Felder oder riesige Tabellen.
    Ich kann gezielt in ner Spalte auf setzen oder nach einem Inhalt suchen und ab dem die Daten schreiben.

    mit einem Pgm ein Excel zu designen ...
    Nein, bestimmt nicht!

    Der ILEMax

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Nun ja, der obige Ansatz ist halt etwas komplizierter als ein CPYFRMIMPF.
    Diese Ausgabe kann von Excel auch ganz einfach geöffnet werden.

    Aber die Datenimporte von Excel sind da viel einfacher, keine Programmierung, besseres Arbeiten mit den Ergebnissen.
    Aktualisieren ist mit obiger Methode eher nicht möglich.

    Ich kann Datenimporte auch direkt in eine Pivot/PowerPivot-Tabelle machen.
    Mach dies mal mit obigem Tool.
    Der Aufwand ist geradezu unverhältnismäßig.

    Und wo ist da das berühmte WYSIWYG?
    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

Berechtigungen

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