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

MATLAB Discussion :

multi selection fichier Excel


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut multi selection fichier Excel
    Bonjour, je voudrais faire une lecture de plusieurs fichier Excel en les stockant dans un tableau de cellules, je voudrais faire ceci avec ce code que je l'ai appliqué sur des images:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    n = input('saisir la valeur de n a reserver = '); % nombre d'images a stocker
    A = cell(n);
     
    for i = 1:n
        [FileName,PathName] = uigetfile({'*.dcm;*.jpg;*.raw;*.RAW;*.img;*.gif;*.bmp;*.png'}, ...
        'Select the images','MultiSelect', 'on'); %File Selector
    img = imread(fullfile(PathName,FileName));
        A{i} = img;
    end
    quelqu'un peut m'aider svp.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    quel est le problème?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Bonjour magelan, pas de problème sauf que le code présenté sous-dessus est conçu pour des images. Ma question est la suivante, en se basant sur le même principe,comment je vais lire le fichier Excel et affecter le contenu qui est une matrice vers le tableau de cellule A, pour chaque incrémentation de n. Quelle est la modification apportée sur le code sous-dessus.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur en science de l'environnement
    Inscrit en
    Août 2013
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en science de l'environnement

    Informations forums :
    Inscription : Août 2013
    Messages : 97
    Points : 149
    Points
    149
    Par défaut
    Matlab intègre la fonction xlsread pour ouvrir les fichiers excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [FILENAME, PATHNAME] = uigetfile('*.*');
    cd(PATHNAME);
    data = xlsread(FILENAME,sheet); %sheet = le numéro du classeur à selectionner
    A{i} = data;

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Merci pour le code, on fait j'ai quelque souci. c'est quoi le rôle de cd je vois pas son utilité et tu veux dire par quoi scheet sachant que mes fichiers sont nommés DATA1, DATA2 etc . Le grand problème que ma machine se plante malgré elle est performante!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme déjà fait remarqué ici, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [FileName,PathName] = uigetfile({'*.dcm;*.jpg;*.raw;*.RAW;*.img;*.gif;*.bmp;*.png'}, ...
        'Select the images','MultiSelect', 'on'); %File Selector
    est à mettre AVANT la boucle, et la boucle servira à parcourir les différents fichiers sélectionnés : code que je t'ai fourni dans le message suivant.

    Si tu souhaites lire des fichiers Excel, il faudra changer ces extensions pour .xls et .xlsx.

    Utiliser la fonction cd est une mauvaise idée, d'autant plus si on utilise des fonction du chemin actuel, il vaut mieux utiliser fullfile afin de fournir le chemin complet du fichier.

    sheet, comme l'indique la documentation de la fonction xlsread représente le nom de la feuille dans laquelle tu souhaites lire tes données ('Feuil1', 'Feuil2' ou 'Feuil3' par exemple). Si tu ne spécifies pas cet argument, la première sera prise par défaut. Tu peux dans la même idée, renseigner la plage de cellules (argument xlRange).

    Qu'entends-tu par planter ? As-tu une erreur ? Laquelle ?

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Bonsoir Winjerome, tu m'excuses mais vous êtes costaud ! Parce que là je me trouve pas, ce que j'ai envie de faire c'est qu'à chaque fois je lis un nouveau fichier Excel ou texte et je le stocke dans un tableau de cellules. Mes fichiers en Excel sont assez volumineux soit 4098x1050 codé en double. Le programme se plante des fois, et le temps écoulé pour un seul stock est assez important. Voici un peu de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    n = input('saisir la valeur de n a reserver = ');
    A = cell(n);
     
    for i = 1:n
        [FileName,PathName] = uigetfile('*.*'); %File Selector
        img=xlsread(FileName);
        A{i} = img;
    end
    Y a-t-il une modification a apporter afin le rendre plus rapide?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Trouve pas quoi ? Le code du message suivant ?

    Reste-en à fullfile(PathName,FileName) et non seulement à FileName.

    Si tu souhaites lire aussi des fichiers texte, ce n'est pas la fonction xlsread qui faut utiliser. Je te laisse regarder la FAQ pour connaître les fonctions à utiliser selon le contenu.

    Tu as la fonction xlsread1 disponible sur le FEX qui te permettra d'accélérer la lecture en boucle des fichiers Excel.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Bonsoir, désolé mais j'ai rien piégé. Si j'examine mon code je le trouve que c'est logique, je réserve tout d'abord l'espace de stockage, ensuite je lis et j'affecte le contenu pour chaque itération. Bon c'est claire que xlsread ne prends pas en charge la lecture des fichiers text. Je peux avoir votre code afin que je puisse décortiquer ce que vous voulez envi de me dire. Merci

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par callofduty Voir le message
    je réserve tout d'abord l'espace de stockage,
    Tu fais bien d'attirer mon attention là-dessus :
    cell(n) réserve un tableau de taille n x n cases.

    Tu es tout de même capable de suivre un lien et descendre non ?
    Mon message déjà donné.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Sincèrement j'ai pas compris! d'après votre code je peux conclure que vous allez sélectionner a la fois tout les fichiers, ensuite la matrice de cellule prends la dimension nxn, et n ce n'est que la taille (nombre) des fichiers sélectionnés, ensuite c'est le traitement d'affectation.Mais imaginez que vous disposer des fichiers un peu partout, et vous allez le lire pour chaque itération donc la, surement la path va changer pour chaque itération n'est ce pas! Bon bref, soit disant que je suis dans le même dossier et j'en ai des fichiers en Excel a les lire et a les affecter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [FileName,PathName] = uigetfile({'*.txt;*.xlsx'});
    for i = 1:length(FileName)
        pathFile = fullfile(PathName, FileName{i});
        % traitement du fichier
        img = xlsread(fullfile(PathName, FileName{i}));
        A{i} = img; 
    end
    Est ce que c'est ça?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Un exemple pour te convaincre :
    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
    >> cell(3)
     
    ans = 
     
         []     []     []
         []     []     []
         []     []     []
     
    >> cell(3,1)
     
    ans = 
     
         []
         []
         []
     
    >> cell(1,3)
     
    ans = 
     
         []     []     []
    En ce qui concerne le parcours des fichiers... ton premier code fait passer le paramètre 'MultiSelect', 'on', et je t'ai donc fait la remarque qui va avec...
    Maintenant si tu dois sélectionner n fichiers dans plusieurs dossiers différents, une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i = 1:n
        [FileName,PathName] = uigetfile('*.*'); %File Selector
        % traitement du fichier fullfile(PathName, FileName)
    end
    sera la solution.
    Exprime bien ce que tu souhaites faire dès le début, on ne peut pas deviner...
    Dernière modification par Invité ; 01/08/2013 à 20h25.

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Désolé si je m'exprime mal, mais c'est parce que j'ai mal compris ta question, c'est vrais que je peux tout mettre dans un seul fichier et faire la manupe, introduire uigetfile a pour deux avantages, sélectionner n'importe qu'elle fichier situé dans un emplacement quelconque, le second c'est la possibilité de les mettre selon l'ordre voulu. Revenant a la question précédente, comment peut on modifier cette ligne, pour améliorer la vitesse d'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i = 1:length(FileName)
        pathFile = fullfile(PathName, FileName{i});
        % traitement du fichier
        img = xlsread(fullfile(PathName, FileName{i}));% la ligne a modifier
        A{i} = img; 
    end
    Merci

Discussions similaires

  1. Select dans un fichier excel et chaine de caractère
    Par troubleshooting dans le forum Excel
    Réponses: 9
    Dernier message: 17/11/2009, 15h22
  2. Ecrire un select dans un fichier excel (en PHP)
    Par Momodedf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2009, 06h31
  3. Resultats d'un select vers un fichier excel
    Par snufx dans le forum SGBD
    Réponses: 6
    Dernier message: 20/07/2008, 11h06
  4. Réponses: 3
    Dernier message: 02/07/2008, 10h44
  5. Import de fichier excel/multi utilisation
    Par mayou13 dans le forum Access
    Réponses: 2
    Dernier message: 24/05/2007, 11h58

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