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 :

Problème lecture fichier texte


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut Problème lecture fichier texte
    Bonjour,

    J'ai un problème dans la lecture de fichiers Excel.

    A partir d'une interface1, les fichiers Excel sont crées comme cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NOM_Fichier=[categorie '_' configuration '_' dev'_' der'.xls'];
    Les fichiers Excel sont bien crée en format Excel 97-2003.

    Dans une interface2 (celle sur laquelle je travaille), j'importe mon fichier Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [nom,rep] = uigetfile('*.xls*;*.txt*');
     
    if nom==0
       return 
    else   
    end
     
    test= xlsread (fullfile(rep,nom));
    Mais Matlab me dit
    ??? Error using ==> xlsread at 257
    File C:\Users\xxx.xls not in Microsoft Excel
    Format.
    
    Error in ==> interface>function1 at 755
    test= xlsread (fullfile(rep,nom));
     
    ??? Error while evaluating uicontrol Callback
    avec xxx le nom de mon fichier que je veux charger.

    Pour que Matlab "accepte le fichier", je dois ouvrir le fichier Excel et l'enregistrer sous au format .xls (donc a priori rien ne change dans le format de fichier).
    Et là tout fonctionne. D'où peut provenir l'erreur?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pour créer ton fichier Excel, tu utilises XLSWRITE?

    As-tu des messages (avertissement, erreur) lors de l'ouverture avec Excel?

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Oui quand je veux ouvrir mon fichier, le message "Le format est différent de celui spécifié par l'extension du fichier..."
    Dans l'interface1, à l'origine tout les fichiers créer l'étaient en .txt, j'ai donc juste changé l'extension du fichier de sortie en .xls

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Donc voila ton problème.

    Même si ton fichier se nomme 'toto.xls', si tu le sauvegardes comme un fichier texte ce n'est pas un fichier Excel, si tu veux ouvrir un fichier au format texte, tu ne peux pas utiliser XLSREAD, il faut plutôt utiliser TEXTSCAN par exemple.

    Celà dit dans ton cas il serait peut-être plus judicieux de sauvegarder ton fichier au format Excel avec XLSWRITE.
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Donc du coup, il faudrait que je mette xlswrite après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NOM_Fichier=[categorie '_' configuration '_' dev'_' der'.xls'];
    ?

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Pour commencer prends le temps de lire la doc :
    Et dans ton cas ca donnerais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlswrite(NOM_Fichier, ma_variable);
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Avec la fonction xlswrite, je dois indiquer tout ce qui sera dans mon fichier.

    J'ai récupérer le programme de mon collègue, qui créait des fichiers .txt avec des tableaux à l'intérieur (eux même crées avec le programme).

    N'est-il pas possible de créer des fichiers .xls avec les mêmes tableaux sans devoir tout réecrire/recréer avec xlswrite ?

    Je ne comprend pas comment le fichier, créer en remplacant .txt par .xls, est un fichier Excel avec l'extension .xls et qui s'ouvre dans Excel en forçant l'ouverture, mais qu'il n'est pas considéré comme étant un Excel.

  8. #8
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Citation Envoyé par nilsmatlab Voir le message
    N'est-il pas possible de créer des fichiers .xls avec les mêmes tableaux sans devoir tout réecrire/recréer avec xlswrite ?
    Tu peux lire ton fichier dans MATLAB comme un fichier texte (avec TEXTSCAN par exemple) et écrire ses informations dans un fichier Excel avec XLSWRITE.
    Après rien ne t'oblige à utiliser le format Excel, pourquoi ne pas sauvegarder tes fichiers au format CSV, tu as une fonction qui fait ca (CSVREAD/CSVWRITE), c'est un fichier au format texte qu'Excel sait ouvrir. Ca à l'air de correspondre à ton besoin.

    Citation Envoyé par nilsmatlab Voir le message
    Je ne comprend pas comment le fichier, créer en remplacant .txt par .xls, est un fichier Excel avec l'extension .xls et qui s'ouvre dans Excel en forçant l'ouverture, mais qu'il n'est pas considéré comme étant un Excel.
    Essaye d'ouvrir un vrai fichier Excel dans un éditeur de texte (Notepad au hasard) et ouvre ton fichier avec le même éditeur, tu devrais voir la différence: le contenu est différent et c'est pas en changeant le nom du fichier (l'extension) que tu changes le contenu.
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par duf42 Voir le message
    CSVREAD/CSVWRITE
    Je vais essayer ça. Merci !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [nom,rep] = uigetfile('*.xls*;*.txt*;*.dat*');
     
    if nom==0
       return 
    else   
    end
     
    MAP = csv ou dlmread (fullfile(rep,nom));
    Matlab n'arrive pas à me lire le fichier.

    ??? Error while evaluating uicontrol Callback
    
    ??? Error using ==> dlmread at 145
    Mismatch between file and format string.
    Trouble reading number from file (row 1, field 1) ==> Alpha	0
    
    Error in ==> interface>chgt_pal at 755
    MAP= dlmread (fullfile(rep,nom));
     
    ??? Error while evaluating uicontrol Callback
    Je mélange tout à mon avis...

  11. #11
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Pourrais-tu nous montrer à quoi ressemble ton fichier?

    C'est pas parce que c'est du texte que CSVREAD va fonctionner...
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    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
    Alpha	0	5	10	(x)		
    5	1.2039	4.7129	5.1589					
    10	7.3149	8.1569	9.1259			
    15	4.5289	6.1249	9.7279
    20     5.2556       4.5263	7.2658
    (y)
     
    beta	0	5	10	
    5	3.3611	3.2181	3.0611	
    10	3.3491	3.1491	3.0081	
    15	3.3071	3.1401	2.9971
    20     4.5268       4.8796       5.2369
     
    téta	0	5	10	
    5	34.2438	36.6049	44.0008	
    10	34.8251	37.6229	35.3007	
    15	35.7612	38.7887	42.2598
    20     47.2598     48.2547      52.3256
    J'ai plus de 1000 fichiers comme celui ci.
    J'ai réussi la programmation pour retrouver la valeur (x=2.5 et y=17.5)dans ce fichier, (en faisant une moyenne "mean" de 4 valeurs), il faudrait juste que j'arrive à lire mon fichier .txt ou .dat ou .xls

  13. #13
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    De façon très simple tu peux faire comme ca:
    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
     
    % Ouverture du fichier en mode lecture
    fid = fopen(fichier_txt,'r');
    if (fid == -1); return; end
     
    % Lecture des données avec TEXTSCAN
    data = textscan(fid,'%s%s%s%s');
     
    % Fermeture du fichier
    fclose(fid);
     
    % Mise en forme du tableau de données
    data = [data{:}];
     
    % Ecriture des données dans un fichier Excel (.xls)
    xlswrite(fichier_xls, data);
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fid = fopen(fichier_txt,'r');
    , à la place de , est ce qu'il est possible de lire le nom du fichier qui est placé dans une zone Edit (dans une interface) ? Avec ?
    De cette façon l'utilisateur n'aura même pas besoin d'aller "chercher" le fichier ; tout se fera automatiquement.

    Car chaque fichier est de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    categorie_configuration_dev_der
    .

    Merci encore de ton aide duf42 !!

  15. #15
    Invité
    Invité(e)
    Par défaut
    Oui bien sûr c'est possible, le code de Duf42 assume que fichier_txt est une variable avec le nom du fichier dedans. Donc tu peux très bien faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier_txt = get(handles.TagEdit,'string')
    Il te faudra sans doute ajouter l'extension, voire le dossier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier_txt = fullfile(dossier,[fichier_txt '.txt']);

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Ca à l'air de fonctionner jusqu'au moment où je calcule ma valeur

    ??? Index exceeds matrix dimensions.
    
    Error in ==> interface>lancer_simulation at 934
    C3_D4 = MAP(3:4,3:4);
     
    ??? Error while evaluating uicontrol Callback
    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
    handles = guidata(gcbf);
     
    fichier_txt = get(handles.reglage,'string')
    fichier_txt = fullfile(dossier,[fichier_txt '.txt']);
    % Ouverture du fichier en mode lecture
    fid = fopen(fichier_txt,'r');
    if (fid == -1); 
        return; 
    end
    % Lecture des données 
    MAP= textscan(fid,'%s%s%s%s');
    fclose(fid);
    % Mise en forme du tableau de données
    MAP= [MAP{:}];
    fichier_xls=set(handles.reglage,'string');
    % Ecriture des données dans un fichier Excel (.xls)
    xlswrite(fichier_xls, MAP);
     
    MAP= xlsread (fullfile(rep,nom));
    setappdata(gcf,'valeur_de_MAP',MAP);
     
    guidata(gcbf,handles);

  17. #17
    Invité
    Invité(e)
    Par défaut
    Le problème ne vient pas des lignes que tu nous montres, mais de la ligne
    dans la fonction lancer_simulation.
    Vérifie le contenu de ta variable MAP avant cette ligne.
    Mais cette ligne ne serait pas à enlever?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    MAP= [MAP{:}];
    fichier_xls=set(handles.reglage,'string');
    % Ecriture des données dans un fichier Excel (.xls)
    xlswrite(fichier_xls, MAP);
    
    MAP= xlsread (fullfile(rep,nom));
    setappdata(gcf,'valeur_de_MAP',MAP);
    Dernière modification par Invité ; 22/06/2011 à 16h21.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    J'avais effectivement oublié de retirer cette ligne.

    Mais Matlab ne me renvoit aucune valeur ni tableau pour "MAP", c'est de là que vient le problème, le tableau MAP n'a pas dû être crée.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Une autre erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier_xls=get(handles.reglage,'string');

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Oui, je l'avais corrigé entre temps.
    J'ai mis un "assignin" sur MAP pour voir ce qui était créer, et effectivement il n'apparait pas dans le WS.

    Autre question, est ce que le fichier que je veux lire doit être dans le même répertoire que mon .m ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème lecture fichier texte 315Mo
    Par phoenix420 dans le forum Langage
    Réponses: 9
    Dernier message: 26/05/2010, 10h16
  2. Probléme lecture fichier text.
    Par deppierre dans le forum Windows
    Réponses: 7
    Dernier message: 15/12/2009, 19h11
  3. Problème de lecture fichier texte
    Par Draconic dans le forum Visual C++
    Réponses: 1
    Dernier message: 05/08/2007, 18h00
  4. Problème STL lecture fichier texte
    Par Bourrine dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/04/2007, 11h57
  5. [VB.NET]Problème lecture fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/05/2006, 16h05

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