IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Export du résultat en Excel


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 21
    Par défaut Export du résultat en Excel
    Bonjour
    je voudrai savoir comment on fait pour exporter le résultat d'une procédure en Excel.

    Merci

  2. #2
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut
    Bonjour,

    plusieurs solutions possibles mais la plus simple est de créer un fichier texte avec une extension .csv (avec séparateur . Ainsi vous pourrez ouvrir le fichier dans MS excel. Soit il s'ouvrira directement bien soit il faudra utiliser le menu Données\Convertir.

    Pour créer le fichier il faut utiliser le package UTL_FILE et créer le fichier directement sur le serveur de BDD.
    UTL_FILE ne permet pas de créer un fichier sur un poste client.
    Par contre on peut
    - envoyer le fichier par mail au destinataire en utilisant une procédure PL/SQL,
    - ou faire un batch qui lance la procédure PL/SQL puis qui copie le fichier crée au bon endroit pour qu'il soit accessible au destinataire.

    Sinon, on peut créer des packages pour faire des fichier de type XML MS Excel pour créer des fichiers .xls directement lisibles et formatés. Tout dépend du besoin..

    Bon courage

  3. #3
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Hello


    Effectivement il peut y avoir plusieurs solutions. Si le résultat de la procédure est issu d'une simple requête SELECT, alors il existe une solution très basique et vite faite, qui consiste à mettre au début du fichier de script:
    Puis faire un SPOOL sur le résultat du script. Le résultat sera donc un fichier CSV avec Pipe comme séparateur qu'on peut ouvrir avec Excel sans problème. Bien évidemment, cela ne marche qu'avec SQL*Plus et pour les autres cas effectivement la solution de Zephir44 est la classe!

  4. #4
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Voire la note MOS n° 436390.1

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut
    Bonjour,

    ci-dessous un exemple de PL/SQL permettant de créer un fichier .csv

    J'espère que cela vous aidera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    DECLARE
     
    Nomfic varchar2(60);
    Fic UTL_FILE.FILE_TYPE;
     
    NB PLS_INTEGER := 0;
     
    CURSOR C_TEST is select nom, prenom, adresse, cp, ville from emp;
     
    BEGIN
     
        --on compte le nbre d'enregistrement dans le curseur pour savoir s'il est non vide
        --On doit pouvoir faire un autre test pour le même résultat
        For J in C_TEST loop
            NB := NB + 1;
        end loop;
     
        --S'il est non vide on écrit dans le fichier
        IF NB > 0 THEN  
            --Définition du nom et ouverture du fichier 
            Nomfic := 'liste_' || to_char(sysdate,'DDMMYYYY-HH24MISS') || '.csv';
            Fic:=UTL_FILE.FOPEN('DIRECTORY',Nomfic,'w');    
     
            For J in C_TEST loop
                UTL_FILE.PUT_LINE(Fic, J.nom || ';' || J.prenom || ';' || J.adresse || ';' || J.cp || ';' || J.ville);                     
            END LOOP;
     
            --fermeture du fichier 
            UTL_FILE.FCLOSE(Fic);
        END IF;
    END;
    Bon courage et bonne journée

  6. #6
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Citation Envoyé par zephir44 Voir le message
    Bonjour,

    ci-dessous un exemple de PL/SQL permettant de créer un fichier .csv

    J'espère que cela vous aidera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    DECLARE
     
    Nomfic varchar2(60);
    Fic UTL_FILE.FILE_TYPE;
     
    NB PLS_INTEGER := 0;
     
    CURSOR C_TEST is select nom, prenom, adresse, cp, ville from emp;
     
    BEGIN
     
        --on compte le nbre d'enregistrement dans le curseur pour savoir s'il est non vide
        --On doit pouvoir faire un autre test pour le même résultat
        For J in C_TEST loop
            NB := NB + 1;
        end loop;
     
        --S'il est non vide on écrit dans le fichier
        IF NB > 0 THEN  
            --Définition du nom et ouverture du fichier 
            Nomfic := 'liste_' || to_char(sysdate,'DDMMYYYY-HH24MISS') || '.csv';
            Fic:=UTL_FILE.FOPEN('DIRECTORY',Nomfic,'w');    
     
            For J in C_TEST loop
                UTL_FILE.PUT_LINE(Fic, J.nom || ';' || J.prenom || ';' || J.adresse || ';' || J.cp || ';' || J.ville);                     
            END LOOP;
     
            --fermeture du fichier 
            UTL_FILE.FCLOSE(Fic);
        END IF;
    END;
    Bon courage et bonne journée
    Je trouve qu'en général il vaut mieux utiliser pipe '|' comme délimiteur au lieu de séparateur classique des fichiers CSV c'est à dire ";".

    Personnellement à plusieurs reprises j'avais des tables dont le contenu des colonnes contenait le caractère ";".

    Mais bon, le choix de délimiteur est aussi une question de goût

  7. #7
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Citation Envoyé par dariyoosh Voir le message
    séparateur classique des fichiers CSV c'est à dire ";".


    in CSV , C means COMMA not SEMICOLON

  8. #8
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Citation Envoyé par ojo77 Voir le message


    in CSV , C means COMMA not SEMICOLON
    Oui, c'est vrai, je me demande pourquoi ils ont mis C pour dire Comma alors qu'il fallait peut-être mettre SSV avec la première S pour Semicolon.

  9. #9
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 21
    Par défaut
    Citation Envoyé par zephir44 Voir le message
    Bonjour,

    ci-dessous un exemple de PL/SQL permettant de créer un fichier .csv

    J'espère que cela vous aidera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    DECLARE
     
    Nomfic varchar2(60);
    Fic UTL_FILE.FILE_TYPE;
     
    NB PLS_INTEGER := 0;
     
    CURSOR C_TEST is select nom, prenom, adresse, cp, ville from emp;
     
    BEGIN
     
        --on compte le nbre d'enregistrement dans le curseur pour savoir s'il est non vide
        --On doit pouvoir faire un autre test pour le même résultat
        For J in C_TEST loop
            NB := NB + 1;
        end loop;
     
        --S'il est non vide on écrit dans le fichier
        IF NB > 0 THEN  
            --Définition du nom et ouverture du fichier 
            Nomfic := 'liste_' || to_char(sysdate,'DDMMYYYY-HH24MISS') || '.csv';
            Fic:=UTL_FILE.FOPEN('DIRECTORY',Nomfic,'w');    
     
            For J in C_TEST loop
                UTL_FILE.PUT_LINE(Fic, J.nom || ';' || J.prenom || ';' || J.adresse || ';' || J.cp || ';' || J.ville);                     
            END LOOP;
     
            --fermeture du fichier 
            UTL_FILE.FCLOSE(Fic);
        END IF;
    END;
    Bon courage et bonne journée
    Merci zephir44 ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exporter le résultat d'une requête vers Excel
    Par YannOss dans le forum Import/Export
    Réponses: 4
    Dernier message: 11/05/2012, 16h20
  2. Exporter les résultats d'une macro vers une autre feuille excel
    Par sara2001 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2011, 17h33
  3. [Toutes versions] Exporter le résultat d'une requête vers un fichier excel.
    Par Mat08 dans le forum VBA Access
    Réponses: 7
    Dernier message: 22/09/2009, 17h08
  4. Export de résultat de requète dans un fichier excel
    Par Mikke dans le forum VBA Access
    Réponses: 28
    Dernier message: 29/05/2008, 20h07
  5. Export le résultat d'une requette vers Excel
    Par aityahia dans le forum Coldfusion
    Réponses: 3
    Dernier message: 05/12/2006, 21h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo