-
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
-
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.
-
Hilft Dir evtl. schon das Tool SQL2XLSX?
https://www.mcpressonline.com/progra...he-starter-kit
Oder muss es wirklich der Libxlsxwriter sein?
Gruß,
KM
-
@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
-
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.
-
Ich habe es unter 7.2 hinbekommen und musste dazu die makefile.ibm etwas modifizieren
Anbei ein Programm, dass folgende Excel-Tabelle erstellt
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;
//------------------------------------------------------------------//
-
Zitat von Rainer Ross
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
-
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:
-
Vielen Dank.
Da kommt man vom 100sten ins 1000ste ...
Mir fehlt auch noch das ZLIB. Jetzt gehts los :-D
-
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
-
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
-
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?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks