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

xlsfinfo findet ein 'Excelsheet' zu viel

 

programmierferkel
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 02.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2012, 23:35     Titel: xlsfinfo findet ein 'Excelsheet' zu viel
  Antworten mit Zitat      
Hallo liebe goMatlab user!

Ich arbeite gerade an einem kleinen Programm, das Daten aus einer Exceldatei auslesen und abspeichern soll. Die Exceldateien haben dabei eine bestimmte Anzahl an 'sheets'. Der 'user' soll aussuchen können welche sheets er bearbeiten will. Deshalb will ich vorher anzeigen wieviel sheets vorhanden sind.
Ich verwende die Matlabfunktion xlsfinfo um die Anzahl der 'sheets' zu bestimmen. Komischerweise findet xlsfinfo 6 sheets, obwohl meine Exceldatei nur 5 sheets hat. Wenn ich mit xlsread sheet nummer 6 in Matlab auslese wird folgender Text ausgegeben:

nan =

Columns 1 through 3

'Gruppierung' 'Beschriftung Diagramme' 'Ausgabe Diagramme'
'Ende' [ NaN] [ NaN]

Columns 4 through 5

'Diagrammtyp' 'Beschriftung Y Achse'
[ NaN] [ NaN]

Das ganze finde ich in der Exceldatei aber nicht. Weiß vielleicht jemand von euch woher dieses zusätzliche sheet kommt und wie ich das vermeide?

Mein Code sieht ungefähr so aus:

Code:


[filename,pathname]=uigetfile({'*.xls;*.xlsx','Excel-Dateien (*.xls,*.xlsx)';'*.*','Alle Dateitypen (*.*)'},'Wähle eine Datei aus');

[type,sheetarray]=xlsfinfo(filename);

length(sheetarray)

sheetnr=input('Bitte, geben Sie die Nummer des Tabellenblatts ein:');

[daten,header,nan]=xlsread(filename,sheetnr);

 


Erklärung des codes:
mit uigetfile wird eine beliebige Exceldatei vom user ausgewählt.
xlsfinfo soll ein array der sheets erzeugen, dessen Länge mit length() ausgelesen wird.
Dann kann der User das sheet auswählen und der Inhalt wird eingelesen.

lg Programmierferkel
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.01.2012, 23:56     Titel:
  Antworten mit Zitat      
Hallo,

ich kann mir beim besten Willen nicht vorstellen, dass MATLAB in einer Excel-Datei Sheets findet, die nicht da sind, und sich auch noch einen Inhalt dafür ausdenkt.
Das Problem wird also an anderer Stelle liegen. Ich würde vorschlagen:
1. sicher gehen, dass in MATLAB und Excel auch wirklich die gleiche Datei verwendet wird (und dass diese gespeichert ist)
2. absolut sicher gehen, dass es dieses Sheet in der Excel-Datei nicht gibt - vielleicht musst du nur scrollen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
programmierferkel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 02.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2012, 00:12     Titel:
  Antworten mit Zitat      
hallo harald,

du hast recht, ich hab hier auch die lösung für das problem gefunden:

http://www.wer-weiss-was.de/theme156/article625621.html

Ein paar sheets wurden von jemand anderem, der mir die Exceldateien gegeben hat 'versteckt', deshalb hab ich sie nicht gesehen.

mit dem Befehl: formats --> hide&unhide --> unhide sheet...

kann man versteckte sheets wieder einblenden.

Die Tatsache, dass auch solche Sheets vorhanden sein können, die keine Information beinhalten, lässt mir aber einen programmiertechnischen Schauer über den Rücken laufen...

Hat vielleicht jemand eine Idee, wie ich effizient herausfinden kann ob es sich um ein Sheet mit Informationen zum Verarbeiten handelt oder um ein sheet, wie oben gepostet, die keinen Informationsgehalt zum Weiterverarbeiten haben?

lg ferkel

Ps: vielen Dank für die schnelle Antwort!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.01.2012, 00:19     Titel:
  Antworten mit Zitat      
Hallo,

zunächst ist die Frage, wann ein Sheet "Informationen zum Weiterverarbeiten" enthält - das musst du erstmal selbst entscheiden.
Du kannst aber z.B. mit ISEMPTY testen, ob ein eingelesenes Sheet numerische Daten enthält.

Vor allem wirst du das mit MATLAB aber nicht entscheiden können, ohne das Sheet einzulesen (es sei denn, du weißt, wie es heißt).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.