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

Modules Perl Discussion :

[PERL] Win32::Ole 'probleme'


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut [PERL] Win32::Ole 'probleme'
    Bonjour,
    Voili j'aimerais créer un graphique avec en y le "price" et en x les "items"
    J'ai beau avoir chercher une demi journée, je n'ai rien trouvé de 'convaincant', si quelqu'un pouvait m'aider ou encore me donner un tout petit lien, ça ferait plaisir

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    use Win32::OLE;
     
    # Start Excel and make it visible
    $xlApp = Win32::OLE->new('Excel.Application');
    $xlApp->{Visible} = 1;
     
    # Create a new workbook
    $xlBook = $xlApp->Workbooks->Add;
     
     
    # Our data that we will add to the workbook...
    $mydata = [["Item",     "Category", "Price"], 
               ["Nails",    "Hardware",  "5.25"],
               ["Shirt",    "Clothing", "23.00"],
               ["Hammer",   "Hardware", "16.25"],
               ["Sandwich", "Food",      "5.00"],
               ["Pants",    "Clothing", "31.00"],
               ["Drinks",   "Food",      "2.25"]];
     
    # Write all the data at once...
    $rng = $xlBook->ActiveSheet->Range("A1:C7");
    $rng->{Value} = $mydata;
     
    # Create a PivotTable for the data...
    $tbl = $xlBook->ActiveSheet->PivotTableWizard(1, $rng, "", "MyPivotTable");
     
    # Set pivot fields...
    $tbl->AddFields("Price", "Item");
    $tbl->PivotFields("Price")->{Orientation} = 4; # 4=xlDataField
     
    $Chart = $xlBook->Charts->add;
    $Chart->{ChartType} = xlLine;
    $Chart->SetSourceData({Source => $rng, PlotBy => xlColumns});
    $Chart->{HasTitle} = 1;
    $Chart->ChartTitle->{Text} = "Items delivered, en route and to be shipped";
     
    # Clean up
    $xlBook->SaveAs('test.xls');
    $xlApp->{Visible} = 0;
    $xlApp->Quit;
    $xlBook = 0;
    $xlApp = 0;
     
    print "All done.";

  2. #2
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    1) ajoute use strict; et use warnings;
    2) déclare toutes tes variables
    3) erreur du programme
    Bareword "xlLine" not allowed while "strict subs" in use at Graph.pl line 38.
    Bareword "xlColumns" not allowed while "strict subs" in use at Graph.pl line 39.
    4) ajoute des quotes autours des valeurs xlLine et xlColumns


    Ca sera déjà mieux même si cela n'inverse pas tes axes


    ... il reste néanmoins quelques erreurs
    Win32::OLE(0.1707) error 0x80020005: "Le type ne correspond pas"
    in PROPERTYPUT "ChartType" at Graph.pl line 38
    OLE exception from "Microsoft Office Excel":

    Les données source d'un rapport de graphique croisé dynamique ne peuvent pas
    être modifiées. L'affichage des données dans un rapport de tableau croisé
    dynamique peut être modifié en réorganisisant les champs ou les éléments, ou
    en modifiant son rapport de tableau croisé dynamique associé.

    Win32::OLE(0.1707) error 0x800a03ec
    in METHOD/PROPERTYGET "SetSourceData" at Graph.pl line 39

    Dès que j'ai un peu de temps, je regarde pour la suite


    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    #!/usr/local/bin/perl
     
     
    use strict;
    use warnings;
     
    use Win32::OLE;
     
    # Start Excel and make it visible
    my $xlApp = Win32::OLE->new('Excel.Application');
    $xlApp->{Visible} = 1;
     
    # Create a new workbook
    my $xlBook = $xlApp->Workbooks->Add;
     
     
    # Our data that we will add to the workbook...
    my $mydata = [["Item",     "Category", "Price"], 
               ["Nails",    "Hardware",  "5.25"],
               ["Shirt",    "Clothing", "23.00"],
               ["Hammer",   "Hardware", "16.25"],
               ["Sandwich", "Food",      "5.00"],
               ["Pants",    "Clothing", "31.00"],
               ["Drinks",   "Food",      "2.25"]];
     
    # Write all the data at once...
    my $rng = $xlBook->ActiveSheet->Range("A1:C7");
    $rng->{Value} = $mydata;
     
    # Create a PivotTable for the data...
    my $tbl = $xlBook->ActiveSheet->PivotTableWizard(1, $rng, "", "MyPivotTable");
     
    # Set pivot fields...
    $tbl->AddFields("Price", "Item");
    $tbl->PivotFields("Price")->{Orientation} = 4; # 4=xlDataField
     
    my $Chart = $xlBook->Charts->add;
    $Chart->{ChartType} = 'xlLine';
    $Chart->SetSourceData({Source => $rng, PlotBy => 'xlColumns'});
    $Chart->{HasTitle} = 1;
    $Chart->ChartTitle->{Text} = "Items delivered, en route and to be shipped";
     
    # Clean up
    $xlBook->SaveAs('test.xls');
    $xlApp->{Visible} = 0;
    $xlApp->Quit;
    $xlBook = 0;
    $xlApp = 0;
     
    print "All done.";

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut
    Ok merci déjà pour ce que tu as fais ^^

    PS: Je 'sais globalement' comment fonctionne les tableaux dynamiques, mais j'avoue que j'utilise un peu les fonctions comme dans l'exemple que j'avais et je ne sais donc pas vraiment comment elles fonctionnent :/

  4. #4
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Chart->{ChartType} = 58;
    Si tu mets 58 au lieu de xlLine, 'price' se retrouve sur l'axe des y comme tu veux et en x tu as la somme des prix. Est-ce bien ce que tu veux? Ou faut-il les noms des items sur x?


    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $Chart = $xlBook->Charts->Add;
    Je suppose que tu auras d'office des sommes sur un des deux axes. Non?

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut
    C'est presque ça,
    Sauf qu'il faudrait que mes barres soient pour les produits (en colonne) et que l'axe des ordonnées soit croissant.
    Je suis en train de tester tout les "Chart type".

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Je suis en train de tester tout les "Chart type".
    Où as-tu trouvé leur liste?

    Merci,

Discussions similaires

  1. [Ole] Problème OleFunction Find
    Par foovolant dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/08/2006, 09h50
  2. [Win32] [D7] Probleme install BE
    Par JCDC dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/08/2006, 14h44
  3. Récupération de texte avec win32::ole
    Par bluecurve dans le forum Modules
    Réponses: 2
    Dernier message: 22/02/2006, 16h47
  4. [Win32::OLE] Script vbs ?
    Par Hide dans le forum Modules
    Réponses: 2
    Dernier message: 12/01/2006, 13h09
  5. [VB6][Objet OLE] probleme récupération texte
    Par dedella_al dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/10/2005, 19h54

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