WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Schleife für xlsread

 

Philipp68
Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 11.01.2016, 11:51     Titel: Schleife für xlsread
  Antworten mit Zitat      
Hallo,

ich möchte gerne eine bestimmte Zeile aus mehreren Excel Datein auslesen.
Die Namen habe ich als struc im Workspace stehen in Form von 'Name Datum .xls'.
Ich möchte das gerne über eine Schleife machen. Nach jedem mal auslesen, soll diese Zeile in Vollstädnig.xls eingetragen werden. Ich hoffe, ihr wisst, wie ich das machen will. Vielen Dank!
Als Fehlermeldung erscheint

Code:


Error using xlsread (line 122)
Filename must be a string.

Error in Untitled2 (line 13)
    [A{i}] = xlsread((FileNames),'A8:T8');

 



Wie muss ich den Filename eintragen, weil dieser immer unterschiedlich ist?

Code:

FileNames=dir('*.xls');
Namen = struct2cell(FileNames);
Namen = Namen (1,:)';
Namen = strrep(Namen, '.xls','');

tabheader = {'Namen','MW_StandLTIBA:Y','MW_StandLHFTFL:Z','MW_StandLHFTBA:Y','MW_StandLHFTBA:Z','MW_StandLFFHFA:Z','MAX_StandLTIBA:Y','MAX_StandLHFTFL:Z','MAX_StandLHFTBA:Y','MAX_StandLHFTBA:Z','MAX_StandLFFHFA:Z'   'MW_MonopedLTIBA:Y','MW_MonopedLHFTFL:Z','MW_MonopedLHFTBA:Y','MW_MonopedLHFTBA:Z','MW_MonopedLFFHFA:Z','MAX_MonopedLTIBA:Y','MAX_MonopedLHFTFL:Z','MAX_MonopedLHFTBA:Y','MAX_MonopedLHFTBA:Z','MAX_MonopedLFFHFA:Z' };

xlswrite('Vollständig',tabheader);
xlswrite('Vollständig',Namen,['A2:A' num2str(length(FileNames))]);


for i= 1:length(FileNames);
    [A{i}] = xlsread((FileNames),'A8:T8');
    xlswrite('Vollständig',A{i},['B2:T' num2str(length(FileNames))];
end;
 
Private Nachricht senden Benutzer-Profile anzeigen


ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2016, 12:08     Titel:
  Antworten mit Zitat      
Hallo,

wie du schon gesagt hast --> FileNames ist ein struct, d.h. in dieser Variable sind mehrere Unterpunkte vorhanden!

Wenn du auf die Namen zugreifen willst dann musst bei xlsread(FileNames.name,'A8:T8') eintragen!

Schau mal ob das hilft
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 11.01.2016, 12:12     Titel:
  Antworten mit Zitat      
Danke für deinen Tipp, aber leider klappt es nicht.
Code:

Warning: Import mode string is invalid. XLSREAD resets mode to normal.
> In xlsread at 170
  In Untitled2 at 14

Error using xlsread (line 248)
Worksheet '........xls' not found.

Error in Untitled2 (line 14)
    [A{i}] = xlsread(FileNames.name,'A8:T8');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2016, 12:17     Titel:
  Antworten mit Zitat      
Ja denke ich habs,

du hast ja mehrere Files unter FileNames drinnen oder?? Das heißt du musst in deiner for-Schleife dann auch auf jedes einzelne zugreifen --> schau mal ob das klappt:

Code:

A{i} = xlsread(FileNames(i).name,'A8:T8');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 11.01.2016, 12:25     Titel:
  Antworten mit Zitat      
Genau, das ist richtig. Unter FileNames sind alle Excel Datein, die sich im Ordner befinden, aufgelistet. Ich bekomme leider diese Fehlermeldung
Code:

Error using xlswrite (line 166)
Input array is empty.

Error in Untitled2 (line 14)
    xlswrite('Vollständig',A{i},['B2:T' num2str(length(FileNames))]);
 


Im Excel Dokument trägt er nur in zwei Zeilen Werte ein und bei beiden die gleichen.
Im Workspace unter A befinden sich in A1 (1x20 double), in B1 (1x20double) und in C1 ( [] ), falls das bei dem Problem weiterhilft.
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2016, 12:28     Titel:
  Antworten mit Zitat      
Okay,

nur mal vorweg - das Einlesen haut jetzt hin?? Befinden sich in der Matrix A alle notwendigen Werte?
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 11.01.2016, 12:32     Titel:
  Antworten mit Zitat      
Ohman, sry habe mich versehen.
Das "1x20 double, 1x20 double, []" ist als cell aufgeführt und nicht als Matrix.
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2016, 12:36     Titel:
  Antworten mit Zitat      
Was heißt das nun??

Du meinst A(1) ist ein Cell-Array aus 1x20 Werten und A(2) ein Cell-Array aus 1x20 werten usw.! Passt dir das nun oder nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 11.01.2016, 12:45     Titel:
  Antworten mit Zitat      
Ja so meine ich es. Aber er trägt die Zeilen leider fehlerhaft ein. Es wird aus einer Datei eine Zeile drei Mal in die neue Excel Datei geschrieben und nicht drei unterschiedliche ( Es sind drei Excel Datein insgesamt). Beim ersten Mal 'Run' werden von drei Namen, nur zwei eingetragen und beim zweiten Mal 'Run' (hier exsistiert schon Vollständig.xls' ) wird der dritte Name eingetragen.
Das dritte Cell Array scheint leer zu sein und ich weiß nicht warum.

Edit: Im dritten Excel File ist ein Fehler mit der zu lesenden Spalte.
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2016, 12:50     Titel:
  Antworten mit Zitat      
Also ich würde vorerst mal das xlswrite aus der Schleife nehmen und dann alle Daten auf einmal in das Excel schreiben - aber zuerst probieren wir das mit dem leeren cell-array zu lösen!!

Ich nehme an es fehlt die Datei aus dem dritten excel-file! Schau mal ob in dem Bereich den du zum einlesen verwendest (A8:TCool was vorhanden ist in diesem Excel-File! Muss da wirklich der gesamte Bereich eingelesen werden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 11.01.2016, 12:58     Titel:
  Antworten mit Zitat      
Habe xlswrite rausgenommen. Mache das nun mit den zwei Datein, in einen Inhalt von A8:T8 haben. Das funktioniert und ich habe in cell{1} und cell{2} als double meine Werte. Ich habe es nochmal laufen lassen, keine Fehlermeldung, jedoch fehlt nun der zweite Name und die erste Zeile ist zwei mal eingetragen.
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2016, 13:00     Titel:
  Antworten mit Zitat      
Okay,

jetzt muss ich nur noch wissen was genau im Bereich A8:T8 steht? Steht da in jeder Zelle ein eigener Wert? Wenn ja, sind das Zahlen und Wörter oder nur Zahlen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 11.01.2016, 13:02     Titel:
  Antworten mit Zitat      
Von A8:T8 stehen nur Zahlen.
Private Nachricht senden Benutzer-Profile anzeigen
 
ro_mat
Forum-Century

Forum-Century


Beiträge: 158
Anmeldedatum: 20.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2016, 13:10     Titel:
  Antworten mit Zitat      
Okay,

wenns nur Zahlen sind dann braucht das eigentlich kein Cell-Array sein! Probiers mal so:

Code:

A(i,:) = xlsread(FileNames(i).name,'A8:T8');
 


Nun sollte von den ersten beiden Excel-Files alle Zahlen in der Matrix A stehen oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Philipp68
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 21.10.15
Wohnort: Mannheim / Ilmenau
Version: R2014a, R2017a, R2019b
     Beitrag Verfasst am: 11.01.2016, 13:14     Titel:
  Antworten mit Zitat      
Ja das tun sie, Fehlermeldung hier
Code:

Cell contents reference from a non-cell array object.

Error in Untitled2 (line 15)
xlswrite('Vollständig',A{i},['B2:T' num2str(length(FileNames))]);
 


und das A(i,:) ist mit rot markiert: A appear to change size on every loop iteration. Consider prelocating for speed.

Ich gehe auch davon aus, dass xlswrite A{i} zu A(i,:) geändert werden muss.

Zuletzt bearbeitet von Philipp68 am 11.01.2016, 13:38, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.