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

Bibliothèques et frameworks PHP Discussion :

[COM] Excel Application (Objet COM) + PHP


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut [COM] Excel Application (Objet COM) + PHP
    Bonjour,

    Je souhaite mettre en place un trie sur un classeur Excel sur des index contenus dans une colonne du fichier.

    Mon fichier est généré à partir d'une base SQL Server et d'un script PHP, car l'utilisateur pour créer son fichier doit renseigner plusieurs critères à travers un formulaire.

    Maintenant, je souhaiterai savoir si à partir de l'objet COM (Excel Application), nous pouvons effectuer des opérations de tris, de copies de valeurs; des opérations qui sont disponibles avec Excel.

    Un exemple de code PHP utilisant l'objet COM, ce code génère un fichier excel et écrit dans ce même fichier dans des cellules sélectionnées :

    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
    32
    33
    34
    35
    36
     
    <?php 
            define("FILENAME","C:/tests.xls");
     
            if(file_exists(FILENAME))
            {
                 unlink(FILENAME);
            }
            $excel=new COM("Excel.application");//Instanciation de l'objet COM
            $excel->sheetsinnewworkbook=1;//Une seule feuille dans le document
            $excel->Workbooks->Add();//Ajout d'un classeur
            $book=$excel->Workbooks(1);//$book contient le classeur actif
            $sheet=$book->Worksheets(1);//$sheet contient la feuille active
            $sheet->Name="Graphique";//Attribution d'un nom à la feuille
     
            $cell=$sheet->Range('A1'); 
            $cell->value='Personne'; //Titre de mes colonnes
            $cell=$sheet->Range('B1');
            $cell->value='Nombre Questions'; //Nombre de questions qu'on a posées
     
     
    for ($i=2;$i<7;$i++)
    {
            $cell=$sheet->Range('A'.$i);
            $cell->value='Zéro'.($i-1); // Zéros2 jusquà Zéros6
            $cell=$sheet->Range('B'.$i);
            $cell->value=2*$i; // de 4 à 12 questions
    }
     
            $book->saveas(FILENAME);//Enregistrement du document
            unset($sheet);//Libération de $sheet
            unset($book);//Libération de $book
            $excel->Workbooks->Close();//Fermeture du classeur
            $excel->Quit();//On quitte Excel
            unset($excel);//Libération de l'objet $excel
    ?>
    Ainsi j'aurai voulu savoir, si à partir de ce code la on pouvait ajouter des fonctions disponibles en VBA, du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Selection.Sort Key1:=Range("G2"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Merci pour vos réponses !

    Cordialement

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Bonjour,

    Et pourquoi ne pas trier les données avant de créer le fichier excel ?

  3. #3
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Bonjour,

    Je travail sur un SQL Server distant et le temps d'exécution des scripts est relativement élevé (tout en étant respectable).

    J'explique comment se construit le fichier et les options envisagées.

    Mon fichier contient n lignes suivant cette présentation à savoir :

    KEY1---ID1---VALEUR1---VALEUR2---VALEUR3
    KEY2---ID1---VALEUR1---VALEUR2---VALEUR3
    KEY3---ID1---VALEUR1---VALEUR2---VALEUR3
    MOY---(vide)---MOY(VALEUR1)---MOY(VALEUR2)---MOY(VALEUR3)

    KEY3---ID2---VALEUR1---VALEUR2---VALEUR3
    KEY4---ID2---VALEUR1---VALEUR2---VALEUR3
    KEY5---ID2---VALEUR1---VALEUR2---VALEUR3
    MOY---(vide)---MOY(VALEUR1)---MOY(VALEUR2)---MOY(VALEUR3)

    Dans ma requête, j'extraie chaque lignes correspondant a une clé + un id et dans mon script je calcul la moyenne de chaque valeurs d'un ID suivant cette présentation.

    Le problème est qu'une autre condition vient s'ajouter à cela à savoir un trie par la moyenne de VALEUR3. Si la moyenne de VALEUR3 pour ID2 est supérieure à la moyenne de VALEUR3 pour ID1, je doit faire remonter tout le bloc ID2 avant ID1 et ainsi de suite.

    C'est pour cela que je pensais à faire le traitement directement sur le fichier excel généré par l'objet COM.

  4. #4
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    J'ai oublié de préciser que pour des raisons de performances je préfère oublier le principe de requête imbriquées.

Discussions similaires

  1. [COM] PHP en communication avec l'objet COM
    Par joe_le_mort dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 22/05/2012, 14h57
  2. Excel COM PHP
    Par Retrokiller069 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/08/2011, 15h45
  3. feuille excel notifie objet COM
    Par ali.ensi dans le forum Visual C++
    Réponses: 4
    Dernier message: 17/05/2007, 09h45
  4. [COM] PHP et word ?
    Par ronando dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/07/2006, 17h52
  5. [COM] PHP et COM pour Microsoft Word
    Par lhulard dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/05/2006, 20h02

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