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

Bioinformatique Perl Discussion :

Spreadsheet::ParseExcel => Lire que le debut d un fichier xls


Sujet :

Bioinformatique Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Spreadsheet::ParseExcel => Lire que le debut d un fichier xls
    Bonjour à tous,

    Voila je dois manipuler un fichier xls remplis de données pour creer un graph.

    Il doit y avoir une 20aine de colones de 45000 lignes. Les colonnes vont par couple (X et Y). Je voudrais praser le debut de ces 20 colonnes pour permettre à l utilisateur de choisir quel paire de colone ploter.

    J'ai donc bien pensé à utiliser le module Spreadsheet:arseExcel mail il me semble que la methode Parse ou read pour Spreadsheet:arseExcel::Simple
    Parse la totalité du fichier.

    Est il possible, d'apres votre grande experience de parser SEULEMENT le debut du fichier ??

    ou alors de faire une copie troquée du fichier xls d'origine, ms ca reviens peut etre au meme probleme.

    Je prend toutes solutions, idées, remarques .. alors n hésitez pas !
    Merci !!


  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut !

    Je suis toujours prenneur d'infos merci d'avance.

    Bonne annee a tous !

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Cher ami bioinformaticien(nne ?)

    D'après la doc du module (http://search.cpan.org/~kwitknr/Spre...ParseExcel.pm), il y a toujours un petit code source d'exemple :
    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
     
    use strict;
        use Spreadsheet::ParseExcel;
        my $oBook = 
            Spreadsheet::ParseExcel::Workbook->Parse('Excel/Test97.xls');
        my($iR, $iC, $oWkS, $oWkC);
        foreach my $oWkS (@{$oBook->{Worksheet}}) {
            print "--------- SHEET:", $oWkS->{Name}, "\n";
            for(my $iR = $oWkS->{MinRow} ; 
                    defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++) {
                for(my $iC = $oWkS->{MinCol} ;
                                defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++) {
                    $oWkC = $oWkS->{Cells}[$iR][$iC];
                    print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);
                }
            }
        }
    Or, quand je vois ces boucles, surtout ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(my $iR = $oWkS->{MinRow} ; 
                    defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++)
    tu peux voir qu'ils partent depuis une ligne bien spécifique jusqu'à une autre ligne, bien spécifique. On peut alors modifier cette boucle pour lui dire, mettons de ne prendre que 10 lignes après la première :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(my $iR = $oWkS->{MinRow} ; 
                    $iR<($oWkS->{MinRow}+10) ; $iR++)
    Et voilà, le tour est joué

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je suis apprenti bioinformaticien

    Merci beaucoup pour ta réponse mais ce n'est pas exactement ca que je veux faire, Evidement ! lol

    Voila le probleme n'est pas la lecture ou l affichage des 10 premieres lignes mais le "parsing" une partie du fichier.

    lorsque j'utilise uniquement ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        use strict;
        use Spreadsheet::ParseExcel;
        my $oBook = 
            Spreadsheet::ParseExcel::Workbook->Parse('Excel/Test97.xls');
    Avec un fichier de 10 lignes ou 45000 lignes voir avec un fichier de 45000 lignes et 12 colonnes le temps d'execution du programme passe de 10 à 30 secondes à 3 min.

    Ce que je comprends puisqu'il y a beaucoup plus de donnée !

    Donc je voulais savoir si il n y avait pas moyen de ne parser que le debut du fichier.

    Mais peut etre que cela n est pas possible sans changer le code du module lui meme.
    Je pensais aussi generer un deuxieme fichier plus petit, mais je pense que ca reviendrai au meme, il faudra surment lire tout le fichier pere avant de creer un fils plus court. Sauf si sa lecture et son ecriture est plus rapide (du fait de l'utilisation d'un autre module) que le parsing par le module Spreadsheet:arseExcel.


    Hi ,Hi, Hi ...
    Merci de votre attention

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Hello

    OK, tu as un gros fichier Excel. Ok, tu veux récupérer qu'une portion intéressante. Y a t'il dans ce gros fichiers des éléments qui pourrait aiguiller ta récupération ? Une regexp, ça marche aussi
    Et dis-toi bien que perl, c'est du rapide, donc, un fichier de 45000 lignes, c'est pas ça qui lui fera peur.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    oki merci !
    Ba je v faire avec alors.

    Je vous tiens au courant de ma solution.

    Je tag le post comme resolu du fait que je vais surment garder cette solution ! c t pour voir si il j'avais moyen d'obtimiser la chose ...

    Merci encore et surment a bientot sur le forum

    ++

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

Discussions similaires

  1. Lire une seule feuille d'un fichier XLS avec XLSSpreadSheet
    Par Nono23 dans le forum Composants VCL
    Réponses: 0
    Dernier message: 24/03/2010, 11h28
  2. Spreadsheet::ParseExcel : Lire les formules
    Par Pozzo dans le forum Modules
    Réponses: 1
    Dernier message: 07/10/2009, 18h27
  3. [XL-2003] Lire des info. sans charger son fichier xls
    Par JOHN14 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/09/2009, 14h07
  4. Réponses: 4
    Dernier message: 17/12/2008, 17h25
  5. Requete avec que le debut d'un mot
    Par Karibou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/08/2005, 15h42

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