erstellen Dietmar Aust Opal-Consulting, Köln www.opal-consulting.de



Ähnliche Dokumente
Komplexe Excel-Berichte mit APEX und jxls erstellen

Ausgabe in Excel leicht gemacht mit dem JDD Spreadsheet Publisher. Dietmar Aust JDD- So;ware UG so;ware.com

Ausgabe in Excel leicht gemacht mit dem JDD Spreadsheet Publisher. Dietmar Aust JDD-Software UG

Erstellung von Word und Excel Berichten mit Eclipse BIRT

Reporting Lösungen für APEX wähle Deine Waffen weise

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

Unsere Webapplikation erweitern

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

PDF Erstellung mit APEX - eine kostenlose Alternative

MS Excel 2010 Kompakt

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

ADFC-Jahresprogramm. automatisch erstellen

Individualisierung und Arbeiten mit Büromedien-Vorlagen für Microsoft Office 2010

Python SVN-Revision 12

AutoTexte und AutoKorrektur unter Outlook verwenden

Prozedurale Datenbank- Anwendungsprogrammierung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Lokale Installation von DotNetNuke 4 ohne IIS

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

PDF-Druck und PDF-Versand mit PV:MANAGER

FIREBIRD BETRIEB DER SAFESCAN TA UND TA+ SOFTWARE AUF MEHR ALS EINEM COMPUTER

LineQuest-Leitfaden LineQuest Dialog-Portal. Generieren der LineQuest-Auswertungsdatei

Hinweise zum elektronischen Meldeformular

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Professionelle Seminare im Bereich MS-Office

Informatik Grundlagen, WS04, Seminar 13

Excel Auswertungen in XAuftrag / XFibu

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

PayPal PLUS für Shopware

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

PDF-Druck und PDF-Versand mit repdoc Werkstattsoftware

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Erstellung von Reports mit Anwender-Dokumentation und System-Dokumentation in der ArtemiS SUITE (ab Version 5.0)

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

APEX und Workflows: Spaghetticode oder Integration. Sven Böttcher. Consultant, Apps Associates GmbH

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ich liebe Java && Ich liebe C# Rolf Borst

Kostenlose (Pflicht-) Schulungen

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Dokumentation für das Web-basierte Abkürzungsverzeichnis (Oracle mod_plsql / Apache)

Bedingungen. Bedingungen. Bedingungen

Einstellen der Makrosicherheit in Microsoft Word

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Datenübernahme easyjob 3.0 zu easyjob 4.0

MySQL Queries on "Nmap Results"

Implementierungsvarianten. mit Oracle Application Express

DYNAMISCHE SEITEN. Warum Scriptsprachen? Stand: CF Carola Fichtner Web-Consulting

Programm GArtenlisten. Computerhinweise

Änderungen in Version 12

NCDiff Testmanagement leicht gemacht

Anleitung zur Verwendung der VVW-Word-Vorlagen

TYPO3-Publikations-Daten aus TYPO3 exportieren und in Citavi importieren

Dokumentation zur Versendung der Statistik Daten

Graphen in Apex von Thomas Hernando.

Informationen zur Verwendung von Visual Studio und cmake

Dialogfeld «Speichern unter» öffnen und unter Dateityp «Word Dokument mit Makros» wählen. Das Dokument wird mit der Endung.dotm abgespeichert.

Aktivierung von Makros in den Erfassungshilfen

Datenabgleich. Meine Welt auf einen Blick erleben.

Frankfurt,

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

NODELOCKED LIZENZ generieren (ab ST4)

Schuljahreswechsel im Schul-Webportal

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Einführung in die Programmierung

Arbeiten mit UMLed und Delphi

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Objektorientierte Programmierung

Swetlana Stickhof. Universität Heidelberg

20. DOAG-Konferenz. Flexible Berichtsgestaltung für die Oracle E-Business Suite mit dem Oracle BI Publisher

A.4 Beispiel zum -Versand über Smart Forms


So gehts Schritt-für-Schritt-Anleitung

Kurzanleitung für die Import/Export Funktion Kinderleicht Produkte importieren und aktualisieren und exportieren

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

Datenbanken für Online Untersuchungen

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

COMPUTERIA VOM SERIENBRIEFE UND ETIKETTENDRUCK

zur Sage New Classic 2015

Zur drittletzten Zeile scrollen

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

INSTALLATION DES SQL SERVER 2008r2 für rza fakt

BOKUbox. Zentraler Informatikdienst (ZID/BOKU-IT) Inhaltsverzeichnis

ecaros2 - Accountmanager

VDW Statistik Portal Häufig gestellte Fragen. Version 1.2 ( Katharina Düngfelder & Markus A. Litters) Vorwort

Aus unserer Projekt- und Schulungserfahrung Oracle TechNet

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Step by Step Softwareverteilung unter Novell. von Christian Bartl

BI Publisher Beleggestaltung ganz einfach. Matthias Bergmann Senior Development Berater

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

PowerPoint Vorträge professionell umsetzen

Transkript:

Komplexe pe e Excel Berichte mit APEX und jxls erstellen Dietmar Aust Opal-Consulting, Köln www.opal-consulting.de

Agenda Excel Exporte mit APEX Die Möglichkeiten Das Open Source Projekt jxls Excel Templates zur Generierung verwenden Basiert auf Apache POI Die Integration mit APEX Wie wurde sie realisiert

Opal Consulting Dipl.-Inform. Dietmar Aust, Freelance Consultant 1997-2000: Consultant bei der Oracle Deutschland GmbH / Düsseldorf Schwerpunkte: Oracle Portal, Oracle Reports, Oracle Forms, PL/SQL, PLSQL Web Toolkit (OWA) Seit 09/2000: Freiberuflich Schwerpunkte: Oracle Portal, Oracle Reports, Oracle Application Express, Oracle Express Edition Seit Nov. 2005 ausschließlich APEX Entwicklung Mittlerweile 12 Jahre Erfahrung in der Erstellung von Webapplikationen, regelmäßig auf DOAG, ODTUG, OOW http://daust.blogspot.com/

Warum Excel-Exporte? Wozu benötigen wir die Daten im MS Excel Format? Ganz unterschiedliche Anwendungsfälle Mögliche Anforderungen Nur die Daten, ein einfacher Export der Daten reicht (Weiterverarbeitung in Excel oder Powerpoint) Einfache Formatierungen der Daten Daten auf multiplen l Datenblättern Kompatibilität mit älteren MS Excel Versionen notwendig Kundenanforderungen genau ermitteln, wenn möglich verhandeln! Nicht zu schnell die komplizierte Lösung umsetzen! Use Case des Vortrages: Speziell formatierte Excel Dateien erstellen (fachlich abgestimmt, enthält eventuell Makros) Geschäftsprozesse basieren darauf (Formularwesen) Schnittstellensysteme verarbeiten diese automatisiert weiter

Beispiele

Beispiele

Beispiele

Excel-Exporte mit APEX HTP.P P Ansätze APEX CSV-Export Excel Exporte mit APEX jxls Integration (Java Integration) BI-Publisher

APEX CSV-Export Standfunktionalität t a tät von APEX Einfach zu verwenden Einfach auf einer Region aktivieren fertig! Einschränkungen Nur die Daten keine Formatierungen, keine Logos, keine Makros, Autofilter, etc. Nur eine Abfrage pro Export möglich Excel versucht, intelligent zu sein => problematisch! Die Datentypen werden automatisch erkannt, leider nicht immer korrekt Führende Nullen werden abgeschnitten

BI-Publisher Elegante Lösung Sehr mächtig Gute Architektur, guter Ansatz Kostspielig Manchmal durchaus zu empfehlen, immer die aktuelle Situation beim Kunden für die Empfehlung beachten APEX Integration (Standard) Berichtsvorlage mit MS Word erstellen, kein echtes Excel Alternative: Excel Templates Plugin für MS Excel MS Excel Vorlagen => Diese Integration ist nicht im Standardumfang und muss selbst entwickelt werden

HTP.P Ansätze Wie funktioniert es? Mittels einer Stored Procedure wird der Export manuell programmiert (htp.p) Bsp. :http://spendolini.blogspot.com/2006/04/custom com/2006/04/custom-export- to-csv.html Alternativen CSV generieren (reiner Datenexport) HTML generieren (Daten + Formatierungen) HTML mit htp.p ausgeben, MIME-Typ auf MS Excel setzen (application/vnd.ms-excel) HTML Formatierungen werden konvertiert von MS Excel MS Office 2003 XML generieren Volle Formatierungsmöglichkeiten, multiple Datenblätter, etc. Excel Daten im XML Format speichern, dann dynamisieren

HTP.P Ansätze MS Excel 2003 Template <?xml version="1.0"?> <?mso-application progid="excel.sheet Sheet"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office xmlns:html="http://www.w3.org/tr/rec-html40"> <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> microsoft com:office:office <Author>Dietmar Aust</Author> <Created>2009-11-17T07:43:54Z</Created> </DocumentProperties> <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> microsoft com:office:excel </ExcelWorkbook> <Worksheet ss:name="tabelle1"> <Table ss:expandedcolumncount="1" ss:expandedrowcount="2" x:fullcolumns="1" x:fullrows="1" ss:defaultcolumnwidth="60" ss:defaultrowheight="15"> <Row> <Cell><Data ss:type="number">10</data></cell> </Row> <Row> <Cell><Data ss:type="number">20</data></cell> </Row> </Workbook>

HTP.P Ansätze Bsp. CSV Export BEGIN -- Set the MIME type OWA_UTIL.mime_header ('application/vnd.ms-excel', FALSE); -- Set the name of the file HTP.p ('Content-Disposition: attachment; filename="emp.csv"'); -- Close the HTTP Header OWA_UTIL.http_header_close; -- Loop through all rows in EMP FOR x IN (SELECT e.ename, e.empno, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno AND e.deptno LIKE :p1_deptno) LOOP -- Print out a portion of a row, -- separated by commas and ended by a CR HTP.prn (x.ename ',' x.empno ',' x.dname CHR (13)); END LOOP; -- Send an error code so that the -- rest of the HTML does not render APEX_APPLICATION.g_unrecoverable_error := TRUE; END;

HTP.P Ansätze Vorteile Mehrfache Abfragen Abfragen nebeneinander Mutiple Datenblätter Nachteile Keine Trennung zwischen Layout und Daten! Schwierig zu warten, wenn es komplexer wird Mind. MS Excel 2003 für den XML Ansatz notwendig Ja, MS Excel 2000 wird immer noch verwendet

jxls Das Framework Was ist es? Kleine und leicht zu integrierende Java Bibliothek für die Erstellung von Excel Dateien basierend auf Templates http://jxls.sourceforge.net/ / Basiert auf dem Apache POI Projekt Java API für die nativen Microsoft Office Formaten Lesen und Schreiben von MS Office Dateien mit Java Hervorragende Bibliothek, wird sogar im Oracle SQL Developer verwendet (für den Excel Export) Low Level API => Nicht trivial, wenn komplexere Layouts erstellt werden sollen

jxls Funktionalitäten Unterstützt die MS Office Formate (97-2007), Apache POI wird kontinuierlich weiter entwickelt Template Sprache Schleifen IF THEN (kein direktes ELSE) Ausdrücke (JEXL) Mehrere Collections in einer Arbeitsmappe verwenden (Collection := Rowset, Zeilen einer Wertemenge) Eine einzelne Collection auf mehreren Datenblättern in derselben Arbeitsmappe verwenden Mehrere Spalten der Collection in einer Zelle verwenden Hallo ${user.first_name} ${user.last_name}

jxls Das Framework Daten gruppieren und filtern Spalten dynamisch ausblenden Zus. Funktionen, die in der implementierten i Integration nicht offengelegt wurden Direkter Zugriff auf POI Schicht XLS READER! Excel Datenblätter parsen und Daten auslesen SQL Abfragen in das Datenblatt integrieren, abhängige SQL Abfragen

jxls Das Framework Wie ist der generelle Ablauf? 1. Vorlage erstellen mit MS Excel (.xls) Variablen und Logik hinzufügen 2. Daten ermitteln mit Java (SQL Abfrage, Java Beans) 3. Java API aufrufen => Die Excel Arbeitsmappe wird erstellt

jxls Integration - Beispiele APEX / jxls Integration Eine Teilmenge der Funktionen offenlegen PL/SQL Interface Keine Java Programmierung notwendig! Bsp.: Daten aus zwei SQL Abfragen user_objects: summary:

jxls Beispiele Test application (Demo) Abfrage und Alias festlegen Samples_Template.xls Logo Collection mit den Summen Echte / native Excel Summen (=SUM(B11:B20)) Spalten konditional i einblenden Diagramm in Excel

jxls Beispiele Mehrere Datenblätter innerhalb einer Arbeitsmappe Daten aus zwei SQL Abfragen referenziert (user_objects, summary) Ausgabe von zwei Abfragen nebeneinander Mehrzeilige Listen ausgeben

jxls Template Syntax Wie sieht so ein Template aus? Einfache Spalte, die Zeilen werden automatisch expandiert ${Alias.Spalte}, z.bsp. ${summary.object_type} Explizite Schleifen <jx:foreach items="${summary}" var="s"> </jx> Die Kommandos werden anschließend entfernt

jxls Template Syntax Bedingungen <jx:if> </jx:if> Mehrzeilige Listen

Das Template ändern Formatierung ändern Das Diagramm ändern Eine neue Zeile in der mehrzeiligen Darstellung hinzufügen Neue Spalte object_id ausgeben

Die Integration Die Bestandteile 1. Die Java Applikation erstellen Eingabe: Template als Blob Eingabe: Maps als Varray(Varchar2) Eingabe: SQL Abfragen as Varray(Varchar2) Die jxls API aufrufen Ausgabe : Excel Arbeitsmappe als BLOB 2. Die Java Klassen und Bibliotheken in der Datenbank installieren (mit loadjava) 3. Die PL/SQL API erstellen 4. Die PL/SQL API aufrufen

1. Die Java Applikation Skelett der Java Klasse public class Template { public static BLOB render(oracle.sql.array l pmaps, oracle.sql.array pqueries, BLOB ptemplate) throws Exception, ClassNotFoundException, SQLException, NestableException { // Make internal nal database connection // Loop: Execute all queries and put them in HashMap // Create the XLSTransformer() // Transform into a new resultworkbook into a new BLOB } // Return the new BLOB

2. Installation Grants GRANT JAVASYSPRIV TO XLIB; //or JAVAUSERPRIV dbms_java.grant_permission( 'XLIB', 'SYS:java.lang.RuntimePermission', 'accessdeclaredmembers', '' ); Bibliotheken und Klassen in Oracle installieren loadjava -user xlib/xlib jxls-core-0.9.6.jar loadjava -user xlib/xlib jxls-reader-0.9.6.jar loadjava -user xlib/xlib poi-3.0.1-final-20070705.jar loadjava -user xlib/xlib Template.class

3. Die PL/SQL API PL/SQL Wrapper für die Java API FUNCTION render_template ( p_maps xlib_vc2_array_t, p_queries xlib_vc2_array_t, p_template BLOB ) RETURN BLOB AS LANGUAGE JAVA NAME 'de.oc.xlib.xls.template.render(oracle.sql.array, oracle.sql.array, oracle.sql.blob) return oracle.sql.blob';

4. Die PL/SQL API verwenden CREATE PROCEDURE XLIB.generate_template (p_fil_id IN NUMBER) is l_blob b BLOB; l_out_blob BLOB; l_maps xlib_vc2_array_t := xlib_vc2_array_t (); l_queries xlib_vc2_array_t := xlib_vc2_array_t (); BEGIN SELECT fil_blob_content INTO l_blob FROM xlib_cms_files WHERE fil_id id = p_fil_id; id l_maps.extend (); l_queries.extend (); l_maps (1) := 'user_objects'; l_queries (1) := 'select object_name from user_objects'; l_out_blob := xlib_xls.render_template (p_maps => l_maps, p_queries => l_queries, p_template => l_blob ); OWA_UTIL.mime_header ('application/vnd.ms-excel', FALSE); --htp.print('content- Disposition:attachment;filename="' v_report_title '.xls"'); OWA_UTIL.http_header_close; header WPG_DOCLOAD.download_file (p_blob => l_out_blob); END;

Mehr Beispiele Unser hauptsächlicher Use Case Erstellung von Formularen Versand von gefüllten Formularen per Email V d d K d il h lb Verwendung von der Kommandozeile ausserhalb der Datenbank

Fazit jxls ist ein eleganter Ansatz, um Excel Arbeitsmappen auf Basis von Templates zu erstellen Aktuelle Einschränkung: Die aktuelle Implementierung ist etwas langsam mit größeren Datenmengen Jedoch die perfekte e Lösung für den Use Case bei meinen e Kunden APEX zu erweitern ist einfach Keine Angst vor Java! Jemand kann die Java Klasse schreiben, wir nutzen sie nur über das PL/SQL Interface Hervorragende Möglichkeit, den gesamten Java Stack und all die coolen Bibliotheken zu nutzen

Integration kostenlos verfügbar Die Integration wird demnächst kostenlos verfügbar gemacht Dokumentation Installationsroutine Nur PL/SQL Interface nutzen, kein Java notwendig! Infos f dazu: http://daust.blogspot.com http://www.opal-consulting.de Email: dietmar.aust@opal-consulting.de

APEX Training - Ankündigung Oracle APEX: Knowhow aus der Praxis! 08.03 10.03.2010 in Bensheim http://www.opal-consulting.de/training Dozenten: Denes Kubicek ( APEX Entwickler des Jahres 2008; Oracle ACE) Dietmar Aust Praxisrelevant! Lessons learned von vielen APEX Projekten Hands-On Sessions

APEX / XE Buch Oracle APEX und XE in der Praxis Erscheint am 9.12.2009 Autoren: Denes Kubicek Jens-Christian Pokolm Dietmar Aust

Q&A Q&A Kontakt: Opal-Consulting Dietmar Aust Web: http://www.opal-consulting.de Blog: http://daust.blogspot.com/ p E-Mail: dietmar.aust@opal-consulting.de