SlideShare une entreprise Scribd logo
SQL/400
Intégration de données SQL/400 dans
Microsoft Excel
Sommaire
 Les drivers IBM
 ODBC
 OLE DB
 Intégration dans Excel
 Les requêtes dans Excel (Microsoft QUERY)
 Génération d’un tableau, d’un graphe, d’un tableau croisé dynamique
 Le transfert de fichiers d’iSeries Access for Windows
 Génération d’un fichier CSV sur l’AS/400
 Envoie vers le micro-ordinateur
 Ouvrir Excel directement à partir d’un écran 5250
 DB2 Web Query
 Principes
 Génération de requêtes ouvrant directement Excel à partir d’un navigateur
 Option SpreadSheet Client
 Générer une application Push vers Excel
 Report Broker
 PHP sur AS/400
Introduction
Microsoft Excel est incontournable
 Graphique
 Traitement personnalisé des données
• Reporting
• Consolidations
• Tableaux croisés dynamiques
• …
DB2/400
 Base de données de l’entreprise
 QUERY/400, QUERY MANAGER
Les grandes options
Les connexions à partir d’Excel
Le transfert de fichiers de CA/400
Les fichiers CSV
 Le format XML
Les nouvelles solutions
 DB2 Web Query
 PHP sur IBM i (AS/400)
Les drivers IBM
Sur le poste client
Installés avec Client Access (IBM i
Access for Windows)
ODBC, OLE DB et JDBC
ODBC
Configuration d’une connexion vers
l’AS/400
A partir du Gestionnaire ODBC du
poste client
 En mode graphique
ODBC.ini
 Mode texte
Gestionnaire ODBC
De préférence dans Sources de
données Système
Configuration ODBC
ODBC.INI
Dans C:Windows
Attention 32/64 bits !
Connexion nommée Mante
[ODBC 32 bit Data Sources]
as=iSeries Access ODBC Driver (32 bit)
Mante=iSeries Access ODBC Driver (32 bit)
[as]
Driver32=C:Windowssystem32cwbodbc.dll
[Mante]
Driver32=C:WindowsSysWOW64cwbodbc.dll
ODBC
Travail AS/400
 QZDSOAINIT de QUSRWRK
 Travaux à démarrage anticipé
 Host server démarrés
• STRHOSTSVR *DATABASE
• Normalement est démarré
Optimisation
 DSPACTPJ SBS(QUSRWRK) PGM(QZDASOINIT)
 ADDPJE
 Nb initial de travaux
Travaux anticipés actifs S1017A0R
18/06/12 14:49:35
Sous-système . . . . : QUSRWRK Date de réinit . . . : 18/06/12
Programme . . . . . : QZDASOINIT Heure de réinit . . : 08:05:19
Bibliothèque . . . : QSYS Intervalle . . . . . : 0006:44:16
Travaux anticipés :
Nombre en cours . . . . . . . . . . . . . . . : 5
Moyenne . . . . . . . . . . . . . . . . . . . : 6,3
Maximum . . . . . . . . . . . . . . . . . . . : 8
Travaux anticipés en cours d'utilisation :
Nombre en cours . . . . . . . . . . . . . . . : 3
Moyenne . . . . . . . . . . . . . . . . . . . : 4,1
Maximum . . . . . . . . . . . . . . . . . . . : 7
A suivre...
Microsoft Excel
Permet d’accéder directement aux
données d’un SGBD
 ODBC
 OLE DB
Utilitaire de gestion de requêtes
(MICROSOFT QUERY)
Connexion ODBC
Ajout d’une connexion
 Données/Autres Sources/Assistant de
connexion aux données/DSN ODBC
 Sélectionner la connexion ODBC
Choisir la table et la destination
Modification de la requête
Données/Connexions
Propriétés/Définitions
Modification de la requête
Sécurité
TP1
Créer une connexion ODBC nommée T1
sur votre AS/400
Autorisez le SELECT et le CALL
Associez une bibliothèque courante,
plus une autre bibliothèque
Récupérez, dans Excel, les données
d’un fichier de votre base de données
(contenant une dizaine de milliers
d’enregistrements au maximum)
N’utilisez pas de fichiers de production !
TP 1 (suite)
Modifiez la requête pour faire un
update
Est-ce que cela fonctionne ?
Tableaux croisés dynamiques
Analyse multidimensionnelle des
données
Les dimensions
Les mesures
Exemple
Graphe
TP 2
Créez un tableau Excel avec deux
requêtes
 Un SELECT sur une table
 Un SELECT sur une autre table
Définissez le rafraichissement
automatique à l’ouverture
Testez
TP 3
Créez un nouveau tableau Excel
Créez et utilisez une requête pour
générer un tableau croisé dynamique
Identifiez les dimensions et les
mesures
Testez
Faites de même mais en générant
un graphique
Microsoft QUERY
Assistant de connexion et de gestion
des requêtes
Souvent à installer
Paramétrer une requête
Créer une requête avec QUERY
Dans les critères, indiquer entre [] le
libellé utilisé lors de la saisie
Paramètre dans une cellule
TP 4
Créez une requête avec un paramètre
Définissez ce paramètres dans une
cellule
Activez le rafraichissement
automatique de la requête lors de la
saisie d’une nouvelle valeur
Si possible, essayez la création d’une
liste déroulante de valeurs pour le
paramètre
OLE DB
IBMDA400 : usage
général
IBMDARLA : pour accès
aux enregistrements 1
par 1
IBMDASQL : pour SQL
uniquement
OLE DB dans Excel
Ajout d’une connexion
 Données/Autres Sources/Assistant de
connexion aux données/Autres
 Sélectionner la connexion OLE DB
adaptée (IBMDA400 en général)
ODBC/OLE DB
Peu de différences
OLE DB plus rapide ?
Pas de modification de la requête
dans QUERY
Paramètres uniquement ODBC
TP 5
Créez une connexion OLE DB
Faites une extraction d’une table
Fin de journée 1
Appliquez ces différentes notions à
vos données
Créez des requêtes avec Microsoft
QUERY et utilisez des paramètres
…
Procédures stockées
Une PS fait référence à
 Un « programme » SQL
 Un programme autre
• Idéal RPG IV en V7
Appelée en SQL
ODBC peut appeler une PS et
récupérer des données
 Paramètres IN et/ou OUT
 Result Set (idem résultat d’un SELECT)
PS (suite)
Idéal pour renvoyer des données
dans Excel
Sécurisé car la PS ne fera que ce qui
est prévu par l’informaticien
Possibilité de mettre de
« l’intelligence » dans la requête
Récupération d’un existant RPG, CL…
TP PS
Copier les sources dans votre
environnement
Modifier la PS Liste1 pour qu’elle
corresponde à vos fichiers (aucun
paramètre)
La créer dans votre bibliothèque de
travail
Faites de même avec la procédure
Liste2 (un paramètre)
TP PS (suite)
Créez dans Excel une requête sur
ODBC pour lancer la PS Liste1
(aucun paramètre)
Testez
Faites de même avec la procédure
Liste2 en lui passant un paramètre
Enregistrer le tableau Excel afin qu’il
soit mis à jour à l’ouverture
Testez
iSeries Access
Client naturel de l’AS/400
 Clients ODBC, OLE DB, JDBC
Se charge de la connexion
Transfert de données
 De l’AS/400
 Vers l’AS/400
Intégration dans Excel
Transfert à partir AS/400
CCSID
Problèmes potentiels si CCSID des
fichiers = 65635
Demander à demande de transfert
de forcer la conversion
Automatisation
A partir du PC, dans un .bat
RTOPCB : à partir de l’AS/400
RTOPCB C:DOSSIER1TEST.DTF
RFROMPCB : vers l’AS/400
RXFERPCB : les deux
RXFERPCB C:DOSSIER1TEST.DTF
USER MONPWD
TP 6
Créez une demande de transfert à
partir d’Excel
Quel est le CCSID de vos fichiers ?
Est-ce correct ?
Lancez la sur une ligne de
commande
Automatisez dans un .BAT
Testez éventuellement la mise à jour
à partir d’Excel
TP 6 (suite)
Testez éventuellement la mise à jour
à partir d’Excel
Ne travaillez pas sur un fichier de production !
Exporter à partir de l’AS/400
Il est possible de créer des fichiers
sous un format reconnu par Excel
Les problèmes
 Le fichier doit arriver dans l’IFS
 Les pages de code (CCSID)
Deux grands formats
 CSV
 XML
Création d’un fichier CSV
La commande CPYTOIMPF
CPYTOIMPF FROMFILE(DGAYTE/ENTETE) TOSTMF('/tmp/entete.csv')
MBROPT(*REPLACE) STMFCCSID(*PCASCII) RCDDLM(*CRLF)
FLDDLM(';')
Format CSV
En France, le séparateur de zone est
le ; !
CRLF en fin de ligne
Page de code PCASCII sous Windows
Eventuellement enlever les blancs
inutiles (RMVBLANK(*BOTH) )
Exploitation
Partager le répertoire de l’IFS pour
que les utilisateurs aient accès aux
fichiers
Vérifier les droits d’accès à ce
répertoire (et à tous ceux au dessus
!)
Ecran vert
WRKLNK (‘/tmp’), option 5
XML
Plus complexe à coder directement
en RPG
Nécessite l’utilisation d’API
Mais permet de coder des
informations de mise en forme
Plus riche que le CSV !
TP 7
Si besoin, générez un fichier (PF) qui
contient les données à envoyer vers
Excel
Exportez ce fichier avec la
commande CPYTOIMPF dans un
répertoire de l’IFS (/tmp ?)
Ouvrez le avec Excel
Excel et écran 5250
Utilisation de l’intégrateur (STRPCO)
En interactif uniquement
A partir d’un PC sous Windows
A mettre derrière une option de
menu ou une touche de fonction
Programme CL
PGM
DCL VAR(&CMD) TYPE(*CHAR) LEN(128)
DCL VAR(&PATH) TYPE(*CHAR) LEN(94)
STRPCO PCTA(*NO)
MONMSG IWS4010
CHGVAR VAR(&PATH) VALUE('"excel.exe" "D:test.xlsx"')
CHGVAR VAR(&CMD) +
VALUE('rundll32 shell32,ShellExec_RunDLL ' *BCAT &PATH)
STRPCCMD PCCMD(&CMD) PAUSE(*NO)
ENDPGM
Longueur de Commande
Attention la commande est limitée à
128 caractères !
Possibilité de passer par un .BAT qui
lance la commande complète
"C:Program FilesMicrosoft OfficeOffice14excel.exe" D:test.xlsx
CHGVAR VAR(&PATH) VALUE('"D:TEST.BAT"')
TP8
Faites un programme CL qui ouvre
EXCEL, sans données particulières
Une fois que cela fonctionne, faites
ouvrir un tableau en particulier
Automatisez avec un CL la
génération d’un fichier CSV (TP7),
puis l’ouverture de ce fichier avec
Excel
DB2 Web Query
DB2 WebQuery se présente comme
le remplaçant de QUERY/400
QUERY/400 ne devrait plus évoluer
Nouveau logiciel sous licence DB2
WebQuery
 5733QU2
Performances : utilisation de SQE
 QUERY/400 que CQE
Aide à la Décision
Mais c’est aussi un véritable outil
d’Aide à la Décision
Interface utilisateur évoluée
Couche Métadonnées
OLAP : analyse multi-dimentionnelle
Mode déconnecté
Drill down, drill through
Intégration EXCEL, PDF…
Tableaux
Développements simples
Liens hypertextes
Excel
Envoi des données vers Excel très
simple
Navigateur/Excel
SpreadSheet Client
Accès aux rapports DB2 Web Query
directement à partir d’Excel
Complément dans Excel
Report Broker
Permet d’automatiser du push vers
Excel
Planification intelligente de rapports
Envoi par la messagerie au format
Excel
Option facturable !
La solution PHP sur IBM i
Totalement intégrée
Supportée
Environnement cohérent
 Zend Server : environnement de
production
 Zend Studio : environnement de
développement
 Zend Framework
Architecture
BatchIBM HTTP Server
DB2/400 IFS*PGM
Spool
DTAQ
Dataarea
Sysval
PHP pour quoi faire ?
Nouvelles applications
Refonte d’existant
 Webisation
Intégration de la bureautique
 Excel
 PDF
 Mail
Spool
Ouverture
 Web Services, XML
PHP et Excel
Ouverture directe du tableau Excel
par un simple clic
Très agréable à l’utilisateur
Plusieurs mode
 CSV
 XML
 Classe pour Excel en natif
• Toutes les fonctions d’Excel
• Onglets, les calculs, les images…
PHP et CSV
<?php
//entêtes pour forcer l'utilisation d'Excel
header("Content-Type: application/x-msexcel; name="example-simple"");
header("Content-Disposition: inline; filename="example-simple"");
include "include/db2connect.inc.php"; // on se connecte
//requete
$req = "Select * from client";
$curseur = db2_exec($db2, $req) or die("une errreur s'est produite");
/*on envoie les données.
Tabulation pour changer de colonne (t)et retour(n) pour changer de ligne.
On peut aussi mettre des formules */
print"Liste des utilisateurs
Nous avons la chance de compter parmi nos nombreux utilisateursnn";
print"CodetNomtRuetCPtVillen";
//parcours de résultat de la requête
while (db2_fetch_row($curseur)) {
$Code = db2_result($curseur, 'CODCLI');
$Nom = db2_result($curseur, 'NOMCLI');
$Rue = db2_result($curseur, 'RUECLI');
$CP = db2_result($curseur, 'CPCLI');
$Ville = db2_result($curseur, 'VILCLI');
//mise en forme et affichage de chaque ligne.
print("$Codet$Nomt$Ruet$CPt$Villen");
}
//fermeture BDD
$fin = db2_close($db2) ;
?>
PHP et XML
Utilisation d’une classe qui gère le
XML
<?php
…
include "xml/xml.php"; //on appelle la classe xml
…
$xml= new xml();
$xml->feuille("Notos");
$xml->styledefaut(array("Color"=>"#071287"),"","Fixed");
$titre=$xml->style(array("FontName"=>"Tahoma", "Size"=>"14", "Bold"=>"1", "Italic"=>"1",
"Color"=>"#FF0000"), "Center", "Fixed");
$xml->ligne();
$xml->cell("Code", "", $titre);
$xml->cell("Nom", "", $titre);
$xml->cell("Rue", "", $titre);
$xml->cell("CP", "", $titre);
$xml->cell("Ville", "", $titre);
//pour chaque enregistrement on crée un élément de la liste
while (db2_fetch_row($curseur)) {
$Code = db2_result($curseur, 'CODCLI');
…
$xml->ligne();
$xml->cell($Code);
… }
$xml->envoi("notos.xml"); ?>
<?php
session_start();
include "include/db2connect.inc.php"; // on se connecte
include "xml/xml.php"; //on appelle la classe xml
//requête
$req = "Select * from client";
$curseur = db2_exec($db2, $req) or die("une errreur s'est produite");
$xml= new xml();
$xml->feuille("Notos");
$xml->styledefaut(array("Color"=>"#071287"),"","Fixed");
$xml->protection();
$xml->propriete(array("Author"=>"B. TAVERNIER", "Title"=>"Envoi XML vers Excel",
"Subject"=>"Classe XML", "Keywords"=>"PHP, NOTOS, XML, EXCEL, CLASSE",
"Description"=>"Une classe PHP pour faire des documents XML compatibles Excel", "Category"=>"Classe
PHP"));
$xml->colonnedefaut(40); $xml->colonne(array("2"=>"80","3"=>"160","5"=>"100"));
$xml->impression(1, 1, 1, 1, 1, 1);
$titre=$xml->style(array("FontName"=>"Tahoma", "Size"=>"14", "Bold"=>"1",
"Italic"=>"1", "Color"=>"#FF0000"), "Center", "Fixed");
$xml->ligne();
$xml->cell("Code", "", $titre); $xml->cell("Nom", "", $titre);
$xml->cell("Rue", "", $titre);$xml->cell("CP", "", $titre);
$xml->cell("Ville", "", $titre);
//pour chaque enregistrement on crée un élément de la liste
while (db2_fetch_row($curseur)) {
$Code = db2_result($curseur, 'CODCLI');
$Nom = db2_result($curseur, 'NOMCLI');
$Rue = htmlentities(db2_result($curseur, 'RUECLI'));
$CP = db2_result($curseur, 'CPCLI');
$Ville = db2_result($curseur, 'VILCLI');
$xml->ligne();
$xml->cell($Code);$xml->cell($Nom);$xml->cell($Rue);
$xml->cell($CP);$xml->cell($Ville); }
$xml->envoi("notos.xml");
$fin = db2_close($db2) ;
?>
Excel natif
Classes fournies par « Microsoft »
 Codeplex.com
Quasiment tout Excel (et Word…)
Orienté objet
Plus lourd à coder
Mais vraiment efficace
<?php
… require_once dirname(__FILE__) . '/../Classes/PHPExcel.php';
… $objPHPExcel = new PHPExcel();
… $objPHPExcel->getProperties()->setCreator("Dominique GAYTE")
…
// Create a first sheet, representing sales data
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Facture');
$objPHPExcel->getActiveSheet()->setCellValue('E1', '#12566');
$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Produit');
$objPHPExcel->getActiveSheet()->setCellValue('B3', 'Description');
$objPHPExcel->getActiveSheet()->setCellValue('C3', 'Prix');
$objPHPExcel->getActiveSheet()->setCellValue('D3', 'Montant');
$objPHPExcel->getActiveSheet()->setCellValue('E3', 'Total');
$objPHPExcel->getActiveSheet()->setCellValue('A4', '1001');
$objPHPExcel->getActiveSheet()->setCellValue('B4', utf8_encode('Morilles séchées'));
$objPHPExcel->getActiveSheet()->setCellValue('C4', '20');
$objPHPExcel->getActiveSheet()->setCellValue('D4', '1');
$objPHPExcel->getActiveSheet()->setCellValue('E4', '=C4*D4');
…
$objPHPExcel->createSheet();
$sLloremIpsum = 'Lorem ipsum dolor sit amet, consectetuer
// Add some data to the second sheet, resembling some different data types
$objPHPExcel->setActiveSheetIndex(1);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'CGV');
$objPHPExcel->getActiveSheet()->setCellValue('A3', $sLloremIpsum);
$objPHPExcel->getActiveSheet()->setTitle('CGV');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Lelievre.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
Conclusions
De nombreuses méthodes pour
interfacer Excel avec AS/400
Tout dépend du rendu souhaité
 Texte (CSV)
 Graphique
Du type de programmation
 RPG, PHP, PS
Outils à proposer au client
 DB2 Web Query
 Portail PHP
TP fin jour 2
Intégrez tout ce que vous avez vu
sur un projet concret
 PS
 Automatisation à partir d’un écran vert
 Feuilles Excel intégrant
• Les connexions
• Et les mises à jour automatiques à
l’ouverture

Contenu connexe

En vedette

Ecg sudarsan powerpoint
Ecg sudarsan powerpointEcg sudarsan powerpoint
Ecg sudarsan powerpoint
deenadan
 
Resume_Susanta
Resume_SusantaResume_Susanta
Resume_Susanta
Susanta Dutta Banik
 
Gallach sanchez belgian hydraulic days v1+
Gallach sanchez belgian hydraulic days v1+Gallach sanchez belgian hydraulic days v1+
Gallach sanchez belgian hydraulic days v1+
Waterbouwkundig Laboratorium
 
'Me' presentation
'Me' presentation'Me' presentation
'Me' presentation
kirbybacon8736
 
50 actividades para el día del libro
50 actividades para el día del libro50 actividades para el día del libro
50 actividades para el día del libro
Departamento de Educacion
 
Luyten coherens a numerical tool for the management of the marine coastal e...
Luyten coherens   a numerical tool for the management of the marine coastal e...Luyten coherens   a numerical tool for the management of the marine coastal e...
Luyten coherens a numerical tool for the management of the marine coastal e...
Waterbouwkundig Laboratorium
 
Schindfessel large eddy simulations of an open-channel confluence
Schindfessel large eddy simulations of an open-channel confluenceSchindfessel large eddy simulations of an open-channel confluence
Schindfessel large eddy simulations of an open-channel confluence
Waterbouwkundig Laboratorium
 
Lesson 13 Islamism In America
Lesson 13 Islamism In AmericaLesson 13 Islamism In America
Lesson 13 Islamism In America
Austin Boyd
 

En vedette (8)

Ecg sudarsan powerpoint
Ecg sudarsan powerpointEcg sudarsan powerpoint
Ecg sudarsan powerpoint
 
Resume_Susanta
Resume_SusantaResume_Susanta
Resume_Susanta
 
Gallach sanchez belgian hydraulic days v1+
Gallach sanchez belgian hydraulic days v1+Gallach sanchez belgian hydraulic days v1+
Gallach sanchez belgian hydraulic days v1+
 
'Me' presentation
'Me' presentation'Me' presentation
'Me' presentation
 
50 actividades para el día del libro
50 actividades para el día del libro50 actividades para el día del libro
50 actividades para el día del libro
 
Luyten coherens a numerical tool for the management of the marine coastal e...
Luyten coherens   a numerical tool for the management of the marine coastal e...Luyten coherens   a numerical tool for the management of the marine coastal e...
Luyten coherens a numerical tool for the management of the marine coastal e...
 
Schindfessel large eddy simulations of an open-channel confluence
Schindfessel large eddy simulations of an open-channel confluenceSchindfessel large eddy simulations of an open-channel confluence
Schindfessel large eddy simulations of an open-channel confluence
 
Lesson 13 Islamism In America
Lesson 13 Islamism In AmericaLesson 13 Islamism In America
Lesson 13 Islamism In America
 

Similaire à Sql &amp; excel

Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
Bruno Bonnin
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
Korteby Farouk
 
Mpdf 3
Mpdf 3Mpdf 3
Mpdf 3
Moez Moezm
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
Bruno Bonnin
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
Bruno Bonnin
 
Sql
SqlSql
Sql
krymo
 
Migrer d'Excel vers power bi
Migrer d'Excel vers power biMigrer d'Excel vers power bi
Migrer d'Excel vers power bi
Sophie Marchand, M.Sc., CPA, CGA, MVP
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
Club Scientifique de l'ESI - CSE
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
RihabBENLAMINE
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Bruno Bonnin
 
Adopte une BDD
Adopte une BDDAdopte une BDD
Adopte une BDD
Aymeric Brisse
 
Formation Efficy CRM - Technical training
Formation Efficy CRM - Technical trainingFormation Efficy CRM - Technical training
Formation Efficy CRM - Technical training
Efficy CRM
 
SQL.pdf
SQL.pdfSQL.pdf
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
marwa baich
 
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...Patrick Guimonet
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009
Alexis Sukrieh
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
Hervé Leclerc
 
Ce que tout dba doit savoir sur la configuration et l'optimisation de SQL Ser...
Ce que tout dba doit savoir sur la configuration et l'optimisation de SQL Ser...Ce que tout dba doit savoir sur la configuration et l'optimisation de SQL Ser...
Ce que tout dba doit savoir sur la configuration et l'optimisation de SQL Ser...
serge luca
 
Plugiciel Oracle pour Open ModelSphere
Plugiciel Oracle pour Open ModelSpherePlugiciel Oracle pour Open ModelSphere
Plugiciel Oracle pour Open ModelSpheremodelspherepro
 

Similaire à Sql &amp; excel (20)

Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Mpdf 3
Mpdf 3Mpdf 3
Mpdf 3
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
Sql
SqlSql
Sql
 
Migrer d'Excel vers power bi
Migrer d'Excel vers power biMigrer d'Excel vers power bi
Migrer d'Excel vers power bi
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
chapitre 1 Android 2.pptx
 
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
 
Adopte une BDD
Adopte une BDDAdopte une BDD
Adopte une BDD
 
Formation Efficy CRM - Technical training
Formation Efficy CRM - Technical trainingFormation Efficy CRM - Technical training
Formation Efficy CRM - Technical training
 
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
 
Ce que tout dba doit savoir sur la configuration et l'optimisation de SQL Ser...
Ce que tout dba doit savoir sur la configuration et l'optimisation de SQL Ser...Ce que tout dba doit savoir sur la configuration et l'optimisation de SQL Ser...
Ce que tout dba doit savoir sur la configuration et l'optimisation de SQL Ser...
 
Plugiciel Oracle pour Open ModelSphere
Plugiciel Oracle pour Open ModelSpherePlugiciel Oracle pour Open ModelSphere
Plugiciel Oracle pour Open ModelSphere
 

Dernier

Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
AlbertSmithTambwe
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
abderrahimbourimi
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
Horgix
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 

Dernier (7)

Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 

Sql &amp; excel

  • 1. SQL/400 Intégration de données SQL/400 dans Microsoft Excel
  • 2. Sommaire  Les drivers IBM  ODBC  OLE DB  Intégration dans Excel  Les requêtes dans Excel (Microsoft QUERY)  Génération d’un tableau, d’un graphe, d’un tableau croisé dynamique  Le transfert de fichiers d’iSeries Access for Windows  Génération d’un fichier CSV sur l’AS/400  Envoie vers le micro-ordinateur  Ouvrir Excel directement à partir d’un écran 5250  DB2 Web Query  Principes  Génération de requêtes ouvrant directement Excel à partir d’un navigateur  Option SpreadSheet Client  Générer une application Push vers Excel  Report Broker  PHP sur AS/400
  • 3. Introduction Microsoft Excel est incontournable  Graphique  Traitement personnalisé des données • Reporting • Consolidations • Tableaux croisés dynamiques • … DB2/400  Base de données de l’entreprise  QUERY/400, QUERY MANAGER
  • 4. Les grandes options Les connexions à partir d’Excel Le transfert de fichiers de CA/400 Les fichiers CSV  Le format XML Les nouvelles solutions  DB2 Web Query  PHP sur IBM i (AS/400)
  • 5. Les drivers IBM Sur le poste client Installés avec Client Access (IBM i Access for Windows) ODBC, OLE DB et JDBC
  • 6. ODBC Configuration d’une connexion vers l’AS/400 A partir du Gestionnaire ODBC du poste client  En mode graphique ODBC.ini  Mode texte
  • 7. Gestionnaire ODBC De préférence dans Sources de données Système
  • 9. ODBC.INI Dans C:Windows Attention 32/64 bits ! Connexion nommée Mante [ODBC 32 bit Data Sources] as=iSeries Access ODBC Driver (32 bit) Mante=iSeries Access ODBC Driver (32 bit) [as] Driver32=C:Windowssystem32cwbodbc.dll [Mante] Driver32=C:WindowsSysWOW64cwbodbc.dll
  • 10. ODBC Travail AS/400  QZDSOAINIT de QUSRWRK  Travaux à démarrage anticipé  Host server démarrés • STRHOSTSVR *DATABASE • Normalement est démarré
  • 11. Optimisation  DSPACTPJ SBS(QUSRWRK) PGM(QZDASOINIT)  ADDPJE  Nb initial de travaux Travaux anticipés actifs S1017A0R 18/06/12 14:49:35 Sous-système . . . . : QUSRWRK Date de réinit . . . : 18/06/12 Programme . . . . . : QZDASOINIT Heure de réinit . . : 08:05:19 Bibliothèque . . . : QSYS Intervalle . . . . . : 0006:44:16 Travaux anticipés : Nombre en cours . . . . . . . . . . . . . . . : 5 Moyenne . . . . . . . . . . . . . . . . . . . : 6,3 Maximum . . . . . . . . . . . . . . . . . . . : 8 Travaux anticipés en cours d'utilisation : Nombre en cours . . . . . . . . . . . . . . . : 3 Moyenne . . . . . . . . . . . . . . . . . . . : 4,1 Maximum . . . . . . . . . . . . . . . . . . . : 7 A suivre...
  • 12. Microsoft Excel Permet d’accéder directement aux données d’un SGBD  ODBC  OLE DB Utilitaire de gestion de requêtes (MICROSOFT QUERY)
  • 13. Connexion ODBC Ajout d’une connexion  Données/Autres Sources/Assistant de connexion aux données/DSN ODBC  Sélectionner la connexion ODBC Choisir la table et la destination
  • 14. Modification de la requête Données/Connexions Propriétés/Définitions
  • 15. Modification de la requête Sécurité
  • 16. TP1 Créer une connexion ODBC nommée T1 sur votre AS/400 Autorisez le SELECT et le CALL Associez une bibliothèque courante, plus une autre bibliothèque Récupérez, dans Excel, les données d’un fichier de votre base de données (contenant une dizaine de milliers d’enregistrements au maximum) N’utilisez pas de fichiers de production !
  • 17. TP 1 (suite) Modifiez la requête pour faire un update Est-ce que cela fonctionne ?
  • 18. Tableaux croisés dynamiques Analyse multidimensionnelle des données Les dimensions Les mesures
  • 21. TP 2 Créez un tableau Excel avec deux requêtes  Un SELECT sur une table  Un SELECT sur une autre table Définissez le rafraichissement automatique à l’ouverture Testez
  • 22. TP 3 Créez un nouveau tableau Excel Créez et utilisez une requête pour générer un tableau croisé dynamique Identifiez les dimensions et les mesures Testez Faites de même mais en générant un graphique
  • 23. Microsoft QUERY Assistant de connexion et de gestion des requêtes Souvent à installer
  • 24. Paramétrer une requête Créer une requête avec QUERY Dans les critères, indiquer entre [] le libellé utilisé lors de la saisie
  • 26. TP 4 Créez une requête avec un paramètre Définissez ce paramètres dans une cellule Activez le rafraichissement automatique de la requête lors de la saisie d’une nouvelle valeur Si possible, essayez la création d’une liste déroulante de valeurs pour le paramètre
  • 27. OLE DB IBMDA400 : usage général IBMDARLA : pour accès aux enregistrements 1 par 1 IBMDASQL : pour SQL uniquement
  • 28. OLE DB dans Excel Ajout d’une connexion  Données/Autres Sources/Assistant de connexion aux données/Autres  Sélectionner la connexion OLE DB adaptée (IBMDA400 en général)
  • 29. ODBC/OLE DB Peu de différences OLE DB plus rapide ? Pas de modification de la requête dans QUERY Paramètres uniquement ODBC
  • 30. TP 5 Créez une connexion OLE DB Faites une extraction d’une table
  • 31. Fin de journée 1 Appliquez ces différentes notions à vos données Créez des requêtes avec Microsoft QUERY et utilisez des paramètres …
  • 32. Procédures stockées Une PS fait référence à  Un « programme » SQL  Un programme autre • Idéal RPG IV en V7 Appelée en SQL ODBC peut appeler une PS et récupérer des données  Paramètres IN et/ou OUT  Result Set (idem résultat d’un SELECT)
  • 33. PS (suite) Idéal pour renvoyer des données dans Excel Sécurisé car la PS ne fera que ce qui est prévu par l’informaticien Possibilité de mettre de « l’intelligence » dans la requête Récupération d’un existant RPG, CL…
  • 34. TP PS Copier les sources dans votre environnement Modifier la PS Liste1 pour qu’elle corresponde à vos fichiers (aucun paramètre) La créer dans votre bibliothèque de travail Faites de même avec la procédure Liste2 (un paramètre)
  • 35. TP PS (suite) Créez dans Excel une requête sur ODBC pour lancer la PS Liste1 (aucun paramètre) Testez Faites de même avec la procédure Liste2 en lui passant un paramètre Enregistrer le tableau Excel afin qu’il soit mis à jour à l’ouverture Testez
  • 36. iSeries Access Client naturel de l’AS/400  Clients ODBC, OLE DB, JDBC Se charge de la connexion Transfert de données  De l’AS/400  Vers l’AS/400 Intégration dans Excel
  • 38. CCSID Problèmes potentiels si CCSID des fichiers = 65635 Demander à demande de transfert de forcer la conversion
  • 39. Automatisation A partir du PC, dans un .bat RTOPCB : à partir de l’AS/400 RTOPCB C:DOSSIER1TEST.DTF RFROMPCB : vers l’AS/400 RXFERPCB : les deux RXFERPCB C:DOSSIER1TEST.DTF USER MONPWD
  • 40. TP 6 Créez une demande de transfert à partir d’Excel Quel est le CCSID de vos fichiers ? Est-ce correct ? Lancez la sur une ligne de commande Automatisez dans un .BAT Testez éventuellement la mise à jour à partir d’Excel
  • 41. TP 6 (suite) Testez éventuellement la mise à jour à partir d’Excel Ne travaillez pas sur un fichier de production !
  • 42. Exporter à partir de l’AS/400 Il est possible de créer des fichiers sous un format reconnu par Excel Les problèmes  Le fichier doit arriver dans l’IFS  Les pages de code (CCSID) Deux grands formats  CSV  XML
  • 43. Création d’un fichier CSV La commande CPYTOIMPF CPYTOIMPF FROMFILE(DGAYTE/ENTETE) TOSTMF('/tmp/entete.csv') MBROPT(*REPLACE) STMFCCSID(*PCASCII) RCDDLM(*CRLF) FLDDLM(';')
  • 44. Format CSV En France, le séparateur de zone est le ; ! CRLF en fin de ligne Page de code PCASCII sous Windows Eventuellement enlever les blancs inutiles (RMVBLANK(*BOTH) )
  • 45. Exploitation Partager le répertoire de l’IFS pour que les utilisateurs aient accès aux fichiers Vérifier les droits d’accès à ce répertoire (et à tous ceux au dessus !)
  • 47. XML Plus complexe à coder directement en RPG Nécessite l’utilisation d’API Mais permet de coder des informations de mise en forme Plus riche que le CSV !
  • 48. TP 7 Si besoin, générez un fichier (PF) qui contient les données à envoyer vers Excel Exportez ce fichier avec la commande CPYTOIMPF dans un répertoire de l’IFS (/tmp ?) Ouvrez le avec Excel
  • 49. Excel et écran 5250 Utilisation de l’intégrateur (STRPCO) En interactif uniquement A partir d’un PC sous Windows A mettre derrière une option de menu ou une touche de fonction
  • 50. Programme CL PGM DCL VAR(&CMD) TYPE(*CHAR) LEN(128) DCL VAR(&PATH) TYPE(*CHAR) LEN(94) STRPCO PCTA(*NO) MONMSG IWS4010 CHGVAR VAR(&PATH) VALUE('"excel.exe" "D:test.xlsx"') CHGVAR VAR(&CMD) + VALUE('rundll32 shell32,ShellExec_RunDLL ' *BCAT &PATH) STRPCCMD PCCMD(&CMD) PAUSE(*NO) ENDPGM
  • 51. Longueur de Commande Attention la commande est limitée à 128 caractères ! Possibilité de passer par un .BAT qui lance la commande complète "C:Program FilesMicrosoft OfficeOffice14excel.exe" D:test.xlsx CHGVAR VAR(&PATH) VALUE('"D:TEST.BAT"')
  • 52. TP8 Faites un programme CL qui ouvre EXCEL, sans données particulières Une fois que cela fonctionne, faites ouvrir un tableau en particulier Automatisez avec un CL la génération d’un fichier CSV (TP7), puis l’ouverture de ce fichier avec Excel
  • 53. DB2 Web Query DB2 WebQuery se présente comme le remplaçant de QUERY/400 QUERY/400 ne devrait plus évoluer Nouveau logiciel sous licence DB2 WebQuery  5733QU2 Performances : utilisation de SQE  QUERY/400 que CQE
  • 54. Aide à la Décision Mais c’est aussi un véritable outil d’Aide à la Décision Interface utilisateur évoluée Couche Métadonnées OLAP : analyse multi-dimentionnelle Mode déconnecté Drill down, drill through Intégration EXCEL, PDF…
  • 58. Excel Envoi des données vers Excel très simple
  • 60. SpreadSheet Client Accès aux rapports DB2 Web Query directement à partir d’Excel Complément dans Excel
  • 61. Report Broker Permet d’automatiser du push vers Excel Planification intelligente de rapports Envoi par la messagerie au format Excel Option facturable !
  • 62. La solution PHP sur IBM i Totalement intégrée Supportée Environnement cohérent  Zend Server : environnement de production  Zend Studio : environnement de développement  Zend Framework
  • 63. Architecture BatchIBM HTTP Server DB2/400 IFS*PGM Spool DTAQ Dataarea Sysval
  • 64. PHP pour quoi faire ? Nouvelles applications Refonte d’existant  Webisation Intégration de la bureautique  Excel  PDF  Mail Spool Ouverture  Web Services, XML
  • 65. PHP et Excel Ouverture directe du tableau Excel par un simple clic Très agréable à l’utilisateur Plusieurs mode  CSV  XML  Classe pour Excel en natif • Toutes les fonctions d’Excel • Onglets, les calculs, les images…
  • 66. PHP et CSV <?php //entêtes pour forcer l'utilisation d'Excel header("Content-Type: application/x-msexcel; name="example-simple""); header("Content-Disposition: inline; filename="example-simple""); include "include/db2connect.inc.php"; // on se connecte //requete $req = "Select * from client"; $curseur = db2_exec($db2, $req) or die("une errreur s'est produite"); /*on envoie les données. Tabulation pour changer de colonne (t)et retour(n) pour changer de ligne. On peut aussi mettre des formules */ print"Liste des utilisateurs Nous avons la chance de compter parmi nos nombreux utilisateursnn"; print"CodetNomtRuetCPtVillen"; //parcours de résultat de la requête while (db2_fetch_row($curseur)) { $Code = db2_result($curseur, 'CODCLI'); $Nom = db2_result($curseur, 'NOMCLI'); $Rue = db2_result($curseur, 'RUECLI'); $CP = db2_result($curseur, 'CPCLI'); $Ville = db2_result($curseur, 'VILCLI'); //mise en forme et affichage de chaque ligne. print("$Codet$Nomt$Ruet$CPt$Villen"); } //fermeture BDD $fin = db2_close($db2) ; ?>
  • 67. PHP et XML Utilisation d’une classe qui gère le XML <?php … include "xml/xml.php"; //on appelle la classe xml … $xml= new xml(); $xml->feuille("Notos"); $xml->styledefaut(array("Color"=>"#071287"),"","Fixed"); $titre=$xml->style(array("FontName"=>"Tahoma", "Size"=>"14", "Bold"=>"1", "Italic"=>"1", "Color"=>"#FF0000"), "Center", "Fixed"); $xml->ligne(); $xml->cell("Code", "", $titre); $xml->cell("Nom", "", $titre); $xml->cell("Rue", "", $titre); $xml->cell("CP", "", $titre); $xml->cell("Ville", "", $titre); //pour chaque enregistrement on crée un élément de la liste while (db2_fetch_row($curseur)) { $Code = db2_result($curseur, 'CODCLI'); … $xml->ligne(); $xml->cell($Code); … } $xml->envoi("notos.xml"); ?>
  • 68. <?php session_start(); include "include/db2connect.inc.php"; // on se connecte include "xml/xml.php"; //on appelle la classe xml //requête $req = "Select * from client"; $curseur = db2_exec($db2, $req) or die("une errreur s'est produite"); $xml= new xml(); $xml->feuille("Notos"); $xml->styledefaut(array("Color"=>"#071287"),"","Fixed"); $xml->protection(); $xml->propriete(array("Author"=>"B. TAVERNIER", "Title"=>"Envoi XML vers Excel", "Subject"=>"Classe XML", "Keywords"=>"PHP, NOTOS, XML, EXCEL, CLASSE", "Description"=>"Une classe PHP pour faire des documents XML compatibles Excel", "Category"=>"Classe PHP")); $xml->colonnedefaut(40); $xml->colonne(array("2"=>"80","3"=>"160","5"=>"100")); $xml->impression(1, 1, 1, 1, 1, 1); $titre=$xml->style(array("FontName"=>"Tahoma", "Size"=>"14", "Bold"=>"1", "Italic"=>"1", "Color"=>"#FF0000"), "Center", "Fixed"); $xml->ligne(); $xml->cell("Code", "", $titre); $xml->cell("Nom", "", $titre); $xml->cell("Rue", "", $titre);$xml->cell("CP", "", $titre); $xml->cell("Ville", "", $titre); //pour chaque enregistrement on crée un élément de la liste while (db2_fetch_row($curseur)) { $Code = db2_result($curseur, 'CODCLI'); $Nom = db2_result($curseur, 'NOMCLI'); $Rue = htmlentities(db2_result($curseur, 'RUECLI')); $CP = db2_result($curseur, 'CPCLI'); $Ville = db2_result($curseur, 'VILCLI'); $xml->ligne(); $xml->cell($Code);$xml->cell($Nom);$xml->cell($Rue); $xml->cell($CP);$xml->cell($Ville); } $xml->envoi("notos.xml"); $fin = db2_close($db2) ; ?>
  • 69. Excel natif Classes fournies par « Microsoft »  Codeplex.com Quasiment tout Excel (et Word…) Orienté objet Plus lourd à coder Mais vraiment efficace
  • 70. <?php … require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; … $objPHPExcel = new PHPExcel(); … $objPHPExcel->getProperties()->setCreator("Dominique GAYTE") … // Create a first sheet, representing sales data $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setCellValue('B1', 'Facture'); $objPHPExcel->getActiveSheet()->setCellValue('E1', '#12566'); $objPHPExcel->getActiveSheet()->setCellValue('A3', 'Produit'); $objPHPExcel->getActiveSheet()->setCellValue('B3', 'Description'); $objPHPExcel->getActiveSheet()->setCellValue('C3', 'Prix'); $objPHPExcel->getActiveSheet()->setCellValue('D3', 'Montant'); $objPHPExcel->getActiveSheet()->setCellValue('E3', 'Total'); $objPHPExcel->getActiveSheet()->setCellValue('A4', '1001'); $objPHPExcel->getActiveSheet()->setCellValue('B4', utf8_encode('Morilles séchées')); $objPHPExcel->getActiveSheet()->setCellValue('C4', '20'); $objPHPExcel->getActiveSheet()->setCellValue('D4', '1'); $objPHPExcel->getActiveSheet()->setCellValue('E4', '=C4*D4'); … $objPHPExcel->createSheet(); $sLloremIpsum = 'Lorem ipsum dolor sit amet, consectetuer // Add some data to the second sheet, resembling some different data types $objPHPExcel->setActiveSheetIndex(1); $objPHPExcel->getActiveSheet()->setCellValue('A1', 'CGV'); $objPHPExcel->getActiveSheet()->setCellValue('A3', $sLloremIpsum); $objPHPExcel->getActiveSheet()->setTitle('CGV'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="Lelievre.xlsx"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); exit;
  • 71. Conclusions De nombreuses méthodes pour interfacer Excel avec AS/400 Tout dépend du rendu souhaité  Texte (CSV)  Graphique Du type de programmation  RPG, PHP, PS Outils à proposer au client  DB2 Web Query  Portail PHP
  • 72. TP fin jour 2 Intégrez tout ce que vous avez vu sur un projet concret  PS  Automatisation à partir d’un écran vert  Feuilles Excel intégrant • Les connexions • Et les mises à jour automatiques à l’ouverture